【问题标题】:PHP - Can I shift an array from a specific key?PHP - 我可以从特定键转移数组吗?
【发布时间】:2013-04-22 01:19:54
【问题描述】:

我在 PHP 中的数组遇到了一点问题。

我有以下数组:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
    [3] => kiwi
    [4] => cherry
    [5] => nuts
)

但我想踢出'kiwi'并将所有其他键向上移动,以获得以下...

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
    [3] => cherry
    [4] => nuts
)

我相信这里有人知道如何完成它,php 的转变只需要第一个键而不是特定的。

提前致谢

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    这就是array_splice 为您所做的。如果您愿意,它甚至可以让您在其中插入新条目。

    对于您使用的这种特定情况:

    array_splice($array, 3, 1);
    

    【讨论】:

    • 它会重新生成密钥吗?
    • @SverriM.Olsen,别开玩笑了。
    • 非常感谢 :) 效果很好,例如:array_splice($array , 3, 1);
    【解决方案2】:
    $array = array("banana", "apple", "raspberry", "kiwi", "cherry", "nuts");
    $key = array_search('kiwi', $array);
    unset($array[$key]);
    $array = array_values($array);
    print_r($array);
    
    Output:
    Array ( [0] => banana [1] => apple [2] => raspberry [3] => cherry [4] => nuts ) 
    

    【讨论】:

      【解决方案3】:

      AFAIK,没有任何内置函数可以做到这一点,但你可以创建一个。您要做的是,删除特定元素,然后重新计算键。

      function a_shift($index, $array) {
           unset($array[$index));
           return array_values($array);
      }
      

      【讨论】:

      • 嗯...这里array_map的目的是什么?
      • @Kolink,它将仅从值创建一个新数组,从而重置键。因为这是我更大功能的一部分,所以我忘记删除嵌套数组的情况。
      • 嗯,不会的。它将遍历数组的每个元素,并返回 that 数组的值,如果任何父数组的元素不是数组,则抛出错误...只需 return array_values($arra); 即可。跨度>
      • @Kolink,我还在完成我的评论。请再读一遍。
      【解决方案4】:

      我用它从一个数组中删除键并复制到另一个:

      $keys = [1, 3];
      foreach ($keys as $index => $key) {
          if ($index != 0) {
              $key -= $index;
          }
          $newArr[] = array_splice($oldArr, $key, 1)[0];
      }
      return $newArr;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        • 2014-10-24
        • 2011-03-31
        • 2017-03-20
        • 2019-01-01
        • 1970-01-01
        • 2014-07-01
        相关资源
        最近更新 更多