【问题标题】:How to remove array elements without deleting the keys如何在不删除键的情况下删除数组元素
【发布时间】:2014-11-10 05:12:13
【问题描述】:

我尝试使用 PHP 的 unset() 内置函数从我的 PHP 脚本中删除几个数组元素。
这是我尝试过的代码。

<?php

$my_array = array('.','..','one','two','three','four');

unset($my_array[1] , $my_array[0]);

echo '<pre>';

print_r($my_array);

echo '</pre>';

?>

然后我得到了这个输出。

数组
(
    [2] => 一
    [3] => 两个
    [4] => 三
    [5] => 四
)

但这不是我所期望的。我想要这样的东西。

数组
(
    [0] => 一
    [1] => 两个
    [2] => 三
    [3] => 四
)

我怎样才能做到这一点?谢谢。

【问题讨论】:

标签: php arrays


【解决方案1】:

使用array_shift() 函数从数组中移除第一个元素(红色),并返回移除元素的值。除了你之外,我们可以得到输出。

$a=array('.','..','one','two','three','four');
array_shift($a); //array('..','one','two','three','four');
array_shift($a); // array('one','two','three','four');

使用array_pop() 函数删除数组的最后一个元素。除了你之外,我们可以得到输出。

$a=array('.','..','one','two','three','four');
array_pop()($a); // array('.','..','one','two','three');
array_pop()($a); // array('.','..','one','two');

使用这个函数,数组每次都从零开始索引。 否则使用

$a= array('.','..','one','two','three','four');
unset($a[1] , $a[0]);
print_r(array_values(a));

【讨论】:

    【解决方案2】:

    使用array_values 函数:

    来自http://php.net/manual/en/function.array-values.php

    【讨论】:

      【解决方案3】:

      其实你可以在另一个地方找到你的问题的答案:
      rearrange array keys php

      就像有人告诉你的那样,array_values 会为你解决问题。

      $arr = array_values($arr);
      

      【讨论】:

        【解决方案4】:
        unset($my_array[1] , $my_array[0]);
        $my_array = array_values($my_array);
        

        【讨论】:

          【解决方案5】:

          是的,这是正确的行为,如果你想重置密钥,你可以使用array_values()

          $my_array = array('.','..','one','two','three','four');
          unset($my_array[1] , $my_array[0]);
          $my_array = array_values($my_array);
          

          【讨论】:

          • 你们今天很快。
          • 确定@JesonMunray 没有问题,很高兴它有帮助
          【解决方案6】:
          $my_array = array('.','..','one','two','three','four');
          
          unset($my_array[1] , $my_array[0]);
          
          echo '<pre>';
          
          print_r(array_values($my_array));
          
          echo '</pre>';
          

          【讨论】:

          • 谢谢问题解决了 :) 但在你的代码第 4 行应该是正确的
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-16
          • 2019-04-04
          • 1970-01-01
          • 2019-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多