2

我确信这对于精通 php 的人来说很容易,但是我犯了一个让我的大脑超负荷的错误,所以现在我真的很困惑是否应该使用 array_combine、array_merge 或其他东西......我一直在谷歌搜索和阅读 php.net 4 小时,我想我只是让自己更加困惑......

本质上,我只想在保留键的同时组合一个数组?

//Here are the original arrays
[field_sreference] => Array
    (
        [0] => Array
            (
                [nid] => 28
            )

        [1] => Array
            (
                [nid] => 28
            )

        [2] => Array
            (
                [nid] => 29
            )
    )

[field_idelta] => Array
    (
        [0] => Array
            (
                [value] => 0
            )

        [1] => Array
            (
                [value] => 1
            )

        [2] => Array
            (
                [value] => 0
            )
    )

[field_iswitch] => Array
    (
        [0] => Array
            (
                [value] => 0
            )

        [1] => Array
            (
                [value] => 0
            )

        [2] => Array
            (
                [value] => 0
            )
    )

//Here is what I'm trying to achieve:

[combinedarray] => Array
        (
            [0] => Array
                (
                    [nid] => 28
                    [idelta] => 0
                    [iswitch] => 0

                )

            [1] => Array
                (
                    [nid] => 28
                    [idelta] => 1
                    [iswitch] => 0
                )

            [2] => Array
                (
                    [nid] => 29
                    [idelta] => 0
                    [iswitch] => 0
                )
        )
4

2 回答 2

3

您可以通过简单地迭代数组来解决这个 O(n) ......

$combinedarray = array();
$len = count($field_sreference);
for ($i = 0; $i < $len; $i++) {
    $combinedarray[] = array("nid" => $field_sreference[$i]['nid'], 
                             "idelta" => $filed_idelta[$i]['value'], 
                             "iswitch" => $field_iswitch[$i]['value']);
}

这假设 3 个数组的长度都相同。

于 2012-04-16T19:26:07.840 回答
0

有点快速输入,但这应该工作:

$result = array();
foreach ($arrays as $array)
{
    foreach ($array as $index => $data)
    {
        $result[$index] += $data;        
    }
}

由于您没有以某种简单的形式提供一些输入数组,因此您需要自己测试它。假设它是伪代码,我把它留在这里作为练习。+ 运算符是数组联合运算符

于 2012-04-16T19:44:09.053 回答