【问题标题】:PHP array unsetPHP数组未设置
【发布时间】:2011-07-23 05:44:46
【问题描述】:

这里的代码(在php 5.3.5和5.2.13中执行):

$res = array(1, 2, 3);

unset($res[0]);

for($i = 0; $i < sizeof($res); $i++)
{
  echo $res[$i] . '<br />';
}

在我看到的结果中

<br />2<br />

为什么只有一个元素,而第一个是空的?无法理解。做的时候:

print_r($res);

见:

Array ( [1] => 2 [2] => 3 )

感谢您的帮助!

【问题讨论】:

    标签: php arrays unset array-unset


    【解决方案1】:

    这是因为您以 $i = 0; 而不是新的第一个索引 1 开头。最后一个元素丢失了,因为它在第二个(之前的第三个)元素之前停止,因为大小已减小到 2。这应该会得到您想要的结果:

    foreach($res as $value) {
        echo $value . '<br />';
    }
    

    【讨论】:

      【解决方案2】:

      PHP 不会在未设置时重新排列键。取消设置后的密钥是12。在 for 循环中,i 获取 01 值。使用这个 sn-p 你应该初始化 i1,数组的第一个键。

      提示 1:使用 foreach 遍历数组。
      提示 2:不要使用别名。使用count 代替sizeof

      【讨论】:

        【解决方案3】:

        因为unset sizeof array = 2 之后

        并且基本使用error_reporting(E_ALL)进行开发,对你有帮助

        【讨论】:

          【解决方案4】:

          这没有按预期工作,因为当您取消设置时,sizeof() 返回 2。因此您在 0 上循环到小于 2(又名 1)。

          所以它只会显示索引 1 处的元素,因为你取消了 0 处的元素。

          一个简单的解决方法是使用 foreach 循环:

          foreach($res as $value){
              echo $value .'<br />';
          }
          

          【讨论】:

            【解决方案5】:

            它迭代了 2 次,第一次通过它访问索引 0,你没有设置,第二次访问索引 1,这是你看到的输出。即使只有两个元素,在索引 1 和 2 处,您仍然从原始索引开始。

            【讨论】:

              猜你喜欢
              • 2015-02-17
              • 2013-11-06
              • 1970-01-01
              • 2011-12-06
              • 1970-01-01
              • 1970-01-01
              • 2012-10-06
              • 2015-09-24
              • 2013-06-26
              相关资源
              最近更新 更多