2012-10-18 54 views
0

我有一些標記需要相應地根據數組循環,如果它是多維的,我必須循環它的一種方式,如果不是我不必循環它。Foreach如果多維否則沒有循環,最乾淨的解決方案

因爲現在我通過做一個很大的'ol if/else'來解決這個問題,如果它不是多維的話打印出'靜態'標記,並且如果它是循環標記的話。這很醜陋,使我使用2個相同的標記塊。

if (count($data_array) == count($data_array, COUNT_RECURSIVE)) 
    { block of html } 
else 
{ looped-almost same block of html } 

任何人都得到了這個更好的解決辦法,我很高興來實現它,而不是:)

編輯:clearify,我有了性循環,或不循環的表。

foreach($i as $b => $v) 
$v['item'] 

其中$v['item']貫穿表如果陣列是多維 如果陣列是不多維我打印表與簡單地$i['item']

至極讓我使用2個相同的HTML塊的唯一的區別是$ v/$ i

+1

這兩個塊的完全相同或不同? – Peeyush

+0

完全一樣 – JazzCat

回答

2

在您更新答案後,我認爲只需檢查$array['item']isset即可解決您的問題。

例子:

if(isset($array['item'])) { 
    // Do non-recursive stuff 
} 
else { 
    // Do more checks and recursive stuff 
} 

老答案:

你有沒有想過is_array

for($yourArray as $key => $value) { 
    if (is_array($value)) { 
     // Do multidimensional stuff 
    } 
    else { 
     // Do normal stuff 
    } 
} 
+0

當然,看起來更好,我猜,但它仍然不會解決$ value ['item']和$ yourArray ['item']的冗餘問題,標記仍然需要重複。 – JazzCat

+0

你沒有提及'$ value ['item']'。請在您的問題中添加更多信息。 – nkr

+0

更新了帖子 – JazzCat

0

做像這樣解決了這個:

if(is_array($v)) 
    { 
     $table_array = $v; 
    } 
    else 
    { 
     $table_array = $i; 
     $single = true; 
    } 

foreach循環裏面,並在循環結束

if(isset($single)) 
    break; 

不是很燙....但至少我不重複的HTML :)

相關問題