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

时间:2009-05-18 16:54:02

标签: php multidimensional-array associative-array

我有一个问题,我需要尽早修复。如果我有时间重写整个脚本我会,但这是程序员的生活,对吧? anywho,我接管了一个项目,我有一个多维混合关联/数字数组,如下所示:

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

我需要做的是将每个 itemX 索引中的数据集索引转换为导致此结果的最后一个索引:

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

可能有助于实现这一目标的一些事情是,我 知道 数据集索引将始终是中的第一个索引strong> itemX 索引,键将始终为'dataset',其他键将始终为数字索引。无论如何在PHP中这样做?它是一个混合阵列的事实让我失望。我不能让数字索引重置并从0开始。如果它们的顺序被移动并不重要,只是它们都在'数据集'索引之前。也许这只是其中的一天......:\非常感谢任何建议或意见。

1 个答案:

答案 0 :(得分:2)

循环所有这样的元素:

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,因为这些更改不会影响原始数组。