【问题标题】:multidimensional mixed associative/numeric array shifting多维混合关联/数值数组移位
【发布时间】:2010-10-27 02:15:37
【问题描述】:

我有一个问题需要尽快解决。如果我有时间重写整个脚本我会的,但这就是程序员的生活,对吧?任何人,我已经接管了一个项目,并且我有一个多维混合关联/数字数组,如下所示:

Array
(
    [item1] => Array
        (
            [dataset] => Array()
            [3] => Array()
            [7] => Array()
        )
    [item2] => Array
        (
            [dataset] => Array()
            [4] => Array()
            [19] => Array()
            [2] => Array()
        )
)

我需要做的是将每个 itemX 索引中的 dataset 索引转换为最后一个索引,从而产生以下结果:

Array
(
    [item1] => Array
        (
            [3] => Array()
            [7] => Array()
            [dataset] => Array()
        )
    [item2] => Array
        (
            [4] => Array()
            [19] => Array()
            [2] => Array()
            [dataset] => Array()
        )
)

可能有助于实现这一点的几件事是我知道 数据集索引将始终是itemX 索引,键将始终是“数据集”,其他的将始终是数字索引。有没有办法在 php 中做到这一点?它是一个混合数组的事实让我很震惊。我不能让数字索引重置并从 0 开始。它们的顺序是否被移动并不重要,只是它们都在“数据集”索引之前。也许这只是那些日子之一.... :\ 任何建议或 cmets 都非常感谢。

【问题讨论】:

    标签: php multidimensional-array associative-array


    【解决方案1】:

    像这样循环所有元素:

    foreach ($all_items as $key =>$items) {
       $dataset = $items['dataset'];
       unset($all_items[$key]['dataset']); // Removing it (from the top)
       $all_items[$key]['dataset'] = $dataset; // Adding it again (at the bottom)
    }
    

    取消设置 'dataset' 元素并再次添加它会导致该元素被添加到底部。

    直接修改原始数组很重要,而不是 foreach 中的 $items,因为这些更改不会影响原始数组。

    【讨论】:

    • 太棒了...哇。怎么样。我对所有维度都感到困惑,明显的完全逃脱了我。谢谢大哥!
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 2013-07-10
    • 2011-11-26
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多