【问题标题】:array_diff & renumbering numeric keysarray_diff & 重新编号数字键
【发布时间】:2011-01-23 15:48:21
【问题描述】:
(I'm a beginner)

我的脚本使用标准

$c = 0;
$t = count($array);

while ($c < $t) {
  $blah = $array[$c];
  ++$c;
}

相当广泛。但我刚刚遇到了一种情况,我也需要array_diff,它打破了这一切,因为现在数字键有间隙。我到处都收到Undefined offset 错误。

如何重置数组的数字键?数组中对象的顺序无关紧要。

【问题讨论】:

    标签: php arrays key numeric


    【解决方案1】:

    要重置密钥,您可以使用array_values()

    $array = array_values($array);
    

    【讨论】:

      【解决方案2】:

      您不需要重置数组的键:您必须改变您通过它的方式。

      您应该使用 foreach 循环,而不是使用 while 循环并通过索引访问数组元素,它只会从数组中获取元素:

      foreach ($array as $key => $value) {
          // $key contains the index of the current element
          // $value contains the value of the current element
      }
      

      【讨论】:

      • 为你+1,因为我肯定会在其他地方使用这些知识。但是支票必须交给大图才能击中靶心。谢谢帕斯卡。
      • @Andrew : 不客气 :-) ;;是的,我知道我并没有真正回答这个问题,但我认为这无论如何都会有用 (我总是使用 foreach 循环数组元素) ;;当我看到另一个答案已经谈到array_values时,我没有把它放在我的里面。
      • 感谢您抽出宝贵时间来回答,我真的愿意。我的脚还在湿漉漉,众所周知,我正处于学习编程的“我有一把非常棒的锤子”阶段。再次感谢您在朝着更合适的代码设计的道路上进行广泛而有益的推动。
      【解决方案3】:

      谢谢大图。

      对于 lulz,我将与您分享我在等待明智答案时使用的以下白痴技巧:

      $badArray = array_diff($allData, $myData);
      
      $string = implode(",",$badArray);
      
      $dump = explode(",",$string);
      
      $goodArray = $dump;
      

      工作。让我觉得浑身脏兮兮的,但它奏效了。

      【讨论】:

        猜你喜欢
        • 2011-10-31
        • 1970-01-01
        • 2011-03-24
        • 2018-10-31
        • 2011-01-01
        • 2015-02-01
        • 1970-01-01
        • 2018-01-16
        • 1970-01-01
        相关资源
        最近更新 更多