2014-05-06 170 views
1

我有一個數組,看起來像這樣多個跨度:創建基於陣列

$elm = 'a,b,c'; 

我需要的數組的值,所以我用explode去他們:

$q = explode(",",$elm); 

然後我願每一個項目呼應成span,所以我做一個數組:

$arr = array(); 
foreach($html->find($q[0]) as $a) { 
$arr[] = $a->outertext; 
} 

$arr2 = array(); 
foreach($html->find($q[1]) as $b) { 
$arr2[] = $b->outertext; 
} 

$arr3 = array(); 
foreach($html->find($q[2]) as $c) { 
$arr3[] = $c->outertext; 
} 

其中t母雞這樣最後我輸出:

echo "<ul>"; 

for($i=0; $i<sizeof($arr + $arr2 + $arr3); $i++) 
{ 
    echo "<li>"; 
     echo "<span>".$arr[$i]."</span>"; 
     echo "<span>".$arr2[$i]."</span>"; 
     echo "<span>".$arr3[$i]."</span>"; 
    echo "</li>"; 
} 

echo "</ul>"; 

的問題是,我必須寫所有項目($q[0] + $q[1] + $q[2])和相應的跨度(<span>".$arr[$i]."</span>)這是一個問題,因爲在現實中,我不知道是什麼和第一陣列多久($榆樹)是。因此,我不想'物理地'寫下所有的span元素,而是根據數組$elm實時創建它們。我嘗試了很多東西,但我無法弄清楚。

回答

1

這裏的基本問題是,您不知道$elm將包含多少個元素。 foreach是最好的選擇,因爲它不需要數組的長度來循環。

使用嵌套循環foreach存儲在陣列中的所有outertexts:

foreach (explode(",", $elm) as $elem) { 
    foreach ($html->find($elem) as $a) { 
     $arr[$elem][] = $a->outertext; 
    } 
} 

$arr[$elem][]是最重要的一點在這裏。在外循環的每次迭代中,$elem的值將是a,b和c。在內部循環的每次迭代中,它將在數組中創建一個新索引:$arr['a'],$arr['b']$arr['c']並將相應的值添加到相應的索引。

將所有需要的值存儲在數組中後,它只是循環它的一個問題。由於我們在這裏有一個多維數組,因此您將需要再次使用嵌套循環:

echo "<ul>";  

foreach ($arr as $sub) { 
    echo "<li>"; 
    foreach ($sub as $span) { 
     echo "<span>".$span."</span>"; 
    } 
    echo "</li>"; 
}  

echo "</ul>"; 
+1

非常感謝您:)也爲了闡述這個問題 – Youss