0

我有以下数组:

Array
(
[0] => Array
    (
        [Name] => first_data
        [building] => A
        [apt] => 16
    )

[1] => Array
    (
        [Name] => first_data
        [building] => B
        [apt] => 16
    )
[2] => Array
    (
        [Name] => second_data
        [building] => A
        [apt] => 17
    )

[3] => Array
    (
        [Name] => second_data
        [building] => B
        [apt] => 18
    )

我需要将其返回为:

Array
(
[0] => Array
    (
        [Name] => first_data
        [A] => 16
        [B] => 16
    )
[1] => Array
    (
        [Name] => second_data
        [A] => 17
        [B] => 18
    )

有任何想法吗?

顺便说一句,第一个数组有数百个条目(不仅是 first_data,还有第二个等等),而且它的数量不止 A 和 B。

提前致谢。

4

1 回答 1

1

不完全是您想要的,但如果您改为按名称索引新数组,您可以很容易地做到这一点。如果索引号是某种 ID,您可以为其创建一个字段

foreach ( $oldarray as $index => $piece )
{
    $newarray[$piece['Name']] = array($piece['building'] => $piece['apt'])
}

这会给你

Array
(
['first_data'] => Array
    (
        ['A'] => 16,
        ['B'] => 16
    )
['second_data'] => Array
    (
        ['A'] => 17,
        ['B'] => 18
    )
)

由于您有两个具有相同新条目的条目,因此当您点击第二个循环时,它将简单地添加另一个建筑物名称。如果您可以使用此布局,那么您的解决方案将非常简单,需要更多步骤才能完全按照您的说明进行操作。如果您绝对必须按照您展示的方式进行操作,则需要额外的代码来循环遍历新数组,找到建筑物名称,在正确的位置添加密钥,但如果您有大量数据,这会更慢。

在我看来,我展示它的方式也是一种更容易环顾阵列的方式。如果您想知道“second_data”中 A 的 apt 值,您可以这样做

$newarray['second_data']['A']

使用您的数组布局,它需要一个循环来搜索数组以查找“second_data”,因为您不知道它在哪里。

于 2013-06-28T17:00:45.517 回答