【问题标题】:Looping through array in php在php中循环遍历数组
【发布时间】:2016-02-13 10:45:58
【问题描述】:
<?php
for($i=0; $i<sizeof($top_name); $i++)
{
  for($i=0; $i<sizeof($top_name); $i++)
  {
    echo "<tr><td>".$sub_name[$i]."</td><td>".$sub_diff[$i]."</td></tr>";
    echo "<tr><td>".$top_name[$i]."</td><td>".$top_diff[$i]."</td>  <td>".$top_size[$i]."</td></tr>";
  }
}

?> 

错误:

注意:未定义的偏移量:第 28 行 C:\xampp\htdocs\TRY\data.php 中的 2
注意:未定义的偏移量:第 28 行 C:\xampp\htdocs\TRY\data.php 中的 2

我正在尝试获取数组并将它们排列在表格中,但它给出了该错误。

请解决这个问题。提前谢谢...

【问题讨论】:

  • $top_name 是你的数组名..??
  • 您有一个具有相同递增变量 ($i) 的双 for 循环:这对您的代码没有意义。我认为您只能使用一个循环。但是你想要实现什么?
  • 或者您可能必须使用$i&lt;sizeof($sub_name) 更改第二个循环,但在这种情况下,您必须更改递增变量之一,否则,在第二个主循环中,$i 值是由最后一个更深的循环设置的。
  • 考虑for($i=0, $num_items = sizeof($array); $i &lt; $num_items; $i++) { 这样循环不会在每次迭代中计算数组项。或者使用 foreach。

标签: php arrays for-loop


【解决方案1】:

假设您在 $top_name$sub_name 数组中有这些元素:

$top_name = array( 'First Name', 'Second Name', 'Third Name', 'Fourth Name' );
$sub_name = array( 'Sub One', 'Sub Two' );

您的两个循环以这种方式运行:

1) main loop    > $i = 0 > executed
2)     2nd loop > $i = 0 > executed
3)     2nd loop > $i = 1 > executed
4)     2nd loop > $i = 2 > executed > undefined offset for $sub_name
5)     2nd loop > $i = 3 > executed > undefined offset for $sub_name
6) main loop    > $i = 4 > not executed

因此,对于不存在的$sub_name 元素也会执行更深的循环,而主循环只执行一次。

在第二个循环中,您必须更改递增变量名称和条件变量:

for( $i=0; $i<sizeof( $top_name ); $i++ )
{
    for( $n=0; $n<sizeof( $sub_name ); $n++ )
    {
        echo "<tr><td>".$sub_name[$n]."</td><td>".$sub_diff[$n]."</td></tr>";
        echo "<tr><td>".$top_name[$i]."</td><td>".$top_diff[$i]."</td>  <td>".$top_size[$i]."</td></tr>";
    }
}

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2012-11-14
    • 2011-04-25
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2013-02-06
    相关资源
    最近更新 更多