如何取消设置多维数组中的最后一项?

Posted

技术标签:

【中文标题】如何取消设置多维数组中的最后一项?【英文标题】:How to unset last item in multidimensional array? 【发布时间】:2013-05-12 14:34:27 【问题描述】:

我有一个像下面这样的数组

Array
(
    [0] => Array
        (
            [0] => Date
            [1] => Name
            [2] => Hours
        )
    [1] => Array
        (
            [0] => 2013-01-02
            [1] => Test User
            [2] => 7:59
        )
    [2] => Array
        (
            [0] => 2013-01-03
            [1] => Test User
            [2] => 7:53
        )
    [3] => Array
        (
            [0] => 2013-01-04
            [1] => Test User
            [2] => 8:12
        )
    .
    .
    .
    .
    [16] => Array
    (
        [0] => 
        [1] => Total
        [2] => 103:1
    )
    [17] => Array
        (
            [0] => 
        )
)

并且想从数组中删除最后一项,我已经尝试过array_pop,但是在将上面的数组传递给 array_pop 给我输出后这不起作用

Array
(
    [0] => 
)

我怎样才能用最少的代码实现这一点。

【问题讨论】:

嗯,“不工作”是什么意思?它什么都不做吗?犯错误?让你的电脑崩溃?让飞猴从天上掉下来?给你免费的华夫饼?请澄清。 如果远离是数字数组,您可以像这样删除 unset(array[count(array)-1]); “我试过array_pop”。很高兴知道这一点,但如果您向我们展示您尝试过的代码,那就更好了。 请注意array_pop() 修改数组并返回其最后一个元素。这就是你得到array([0]=>) 的原因。它是初始数组中带有键 17 的元素。 正是 Maxim 所说的。array_pop 工作正常,但您似乎使用错了。 【参考方案1】:

试试:

unset ($array_name[count($array_name)-1]);

【讨论】:

这个答案不必要地复杂,如果以与array_pop() 相同的方式实现,OP 将同样容易出现同样的错误(这是执行此答案的本机函数)。任何研究人员都不应该使用这种技术来删除索引数组中的最后一个元素。【参考方案2】:
$callback = function(&$array)  array_pop($array); ;
array_walk($array, $callback);

这将弹出每个三元组的最后一个元素。

【讨论】:

我没有看到 OP 在哪里要求这种行为。【参考方案3】:

试试看

$my_cnt = count($my_arr);
unset($my_arr[$my_cnt-1]);

【讨论】:

【参考方案4】:

如果您的所有数组都由从零到最大值的数字索引且没有任何中断,则可以使用

unset($ar[count($ar)-1]);

否则试试

end($ar);
unset($ar[key($ar)]);

【讨论】:

【参考方案5】:

您看到的是“弹出”元素而不是修改后的数组。

array_pop() 返回它从数组中删除的元素中的数据。

这意味着你写了:

print_r(array_pop($array));

改为使用array_pop() 修改数组,然后打印数组。

array_pop($array);
print_r($array);

【讨论】:

以上是关于如何取消设置多维数组中的最后一项?的主要内容,如果未能解决你的问题,请参考以下文章

取消设置多维数组中的列

通过嵌套的 foreaches 取消设置多维数组中的键

如何删除多维数组中的唯一元素?

如何取消设置嵌套 foreach 中的每个数组?

JS----使用归递获取多维数组中的某列值

如何拆分 JavaScript 多维数组并获取最后一个数组?