基于数组创建多个span

时间:2014-05-06 17:07:13

标签: php arrays foreach increment simple-html-dom

我有一个如下所示的数组:

$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;
}

最后我输出如下:

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>)这是一个问题,因为实际上我不知道第一个数组的内容和时长( $ elm)是。因此,我不想在身体上&#39;记下所有的span元素,而不是根据数组$elm动态创建它们。我尝试了很多东西,但我无法弄清楚。

1 个答案:

答案 0 :(得分: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'],并将outertext值添加到相应的索引中。

一旦您将所有必需的值存储在数组中,它只需要循环遍历它。由于我们在这里有一个多维数组,你需要再次使用一个嵌套循环:

echo "<ul>";    

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

echo "</ul>";