【问题标题】:Create multiple span based on array基于数组创建多个跨度
【发布时间】:2014-05-06 17:07:13
【问题描述】:

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

$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]) 和相应的跨度(&lt;span&gt;".$arr[$i]."&lt;/span&gt;) 这是一个问题,因为实际上我不知道第一个数组($elm)是什么以及多长时间。因此,我不想“物理地”写下所有跨度元素,而是根据数组$elm 动态创建它们。我尝试了很多东西,但我无法弄清楚。

【问题讨论】:

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


    【解决方案1】:

    这里的基本问题是您不知道$elm 将包含多少个元素。 foreach 是这里的最佳选择,因为它不需要数组的长度来循环遍历它。

    使用嵌套的foreach 循环将所有外部文本存储在一个数组中:

    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>";
    

    【讨论】:

    • 非常感谢:) 也为详细说明这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2019-09-04
    • 2023-01-17
    • 1970-01-01
    相关资源
    最近更新 更多