多维混合关联/数字数组移位

3

我有一个问题需要尽快解决。如果我有时间重写整个脚本,那就好了,但程序员的生活就是这样,对吧?总之,我接手了一个项目,我有一个多维混合关联/数字数组,如下所示:

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 索引中的第一个索引,并且键始终为“dataset”,而其他索引始终为数字索引。有没有办法在PHP中做到这一点?混合数组的事实让我很困惑。我不能重置数字索引并从0开始。它们的顺序被改变不重要,只要它们都出现在“数据集”索引之前即可。也许今天只是那种日子... :\ 任何建议或评论都将不胜感激。
1个回答

3
循环遍历所有类似这样的元素:
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)
}

取消设置“数据集”元素并再次添加它将导致该元素被添加到底部。

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


1
太棒了...哇。怎么样?我在所有维度中都感到非常困惑,显而易见的完全逃脱了我的注意力。谢谢你,伙计! - ocergynohtna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接