3

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

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()
        )
)

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

4

1 回答 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)
}

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

It's important that you modify the original array directly, not the $items from the foreach, because those changes will not affect the original array.

于 2009-05-18T16:58:49.627 回答