【问题标题】:How to remove an Array Key From an Array_Chunck?如何从 Array_Chunk 中删除数组键?
【发布时间】:2017-06-03 01:13:42
【问题描述】:

我有array_chunk 在每个数组中循环通过的一组 10 个键。我想从每个循环的数组中删除键 [10]=>,所以我将剩下 9 个键。到目前为止我所拥有的。

    $page = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");

$number_of_pages_to_copy = 5;

$x = 1;

    while($x <= $number_of_pages_to_copy) { 


      $sum = array_chunk($page, 11);
      unset($sum['10']);
      print_r($sum);

    $x++;
    }

当前输出:

Array ( [0] => Array ( [1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" [10]=> "j" )

[1]=> Array ( [1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" [10]=> "j" )

期望的输出:

Array ( [0] => Array ( [1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" )

[1] => Array ( [0] => Array ( [1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" )

什么都没有发生,未设置似乎不起作用。

【问题讨论】:

  • 如果你想删除最后一个元素,你试过array_pop吗?无论如何,$sum 最初是 11 个键长,而不是 10 个。
  • 你可以做$sum = array_values(array_chunk($page, 11));从0-x获取一个新的索引,索引不作为字符串做unset($sum[10]);
  • 我试过array_pop,还是不行。
  • 请用 $page 输出、您的实际输出结果和您的期望更新您的 Q。
  • 显示所有的输出...... isn't removing dont't work 没有帮助

标签: php arrays while-loop unset


【解决方案1】:

您的 $sum 是一个数组数组,因此您必须使用另一个索引或 foreach。

  array_slice($sum[0],0,10);

或

foreach($sum as &$v)
{
  unset($v[10]);
}

因为你取消了数组的最后一个索引,所以你不需要重新索引数组,如果在取消设置后不使用array_values。

这是一个演示:

<?php
$page = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
$arrays= array_chunk($page, 11);
foreach($arrays as &$array)
{
    unset($array[10]);
}
print_r($arrays);

输出:

ei@localhost:~$ php test.php
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
            [4] => e
            [5] => f
            [6] => g
            [7] => h
            [8] => i
            [9] => j
        )

    [1] => Array
        (
            [0] => l
            [1] => m
            [2] => n
            [3] => o
            [4] => p
            [5] => q
            [6] => r
            [7] => s
        )

)

或

<?php
$page = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s");
$arrays= array_chunk($page, 11);
$arrays = array_map(function($v){return array_slice($v, 0, 10);}, $arrays);
print_r($arrays);

这将得到相同的输出。

【讨论】:

  • 你的说法不对。 unset 做了 unset 做的事情,不需要 array_values。如果用户想在取消设置 array_values 后重新索引数组。您的答案如何与 assoc-arrays 一起使用? $a=array('a'=&gt;'a','b'=&gt;'b'); unset($a['b']); print_r(array_values($a));??
  • var_dump 什么?你用什么来测试你的代码? array_values[$sum] 应该是 array_values($sum);。我要走了……
  • 我使用了 unset($sum[0][10]),key 不见了,但它的值仍然保留在 [9]=>
  • 参考foreach试试
  • foreach 循环给出警告错误:警告:为 foreach() 提供的参数无效
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2019-05-29
  • 2022-11-27
  • 1970-01-01
  • 2021-02-06
  • 2019-09-03
  • 2016-04-11
  • 2019-04-05
相关资源
最近更新 更多