在php中构建一个多维数组

时间:2014-06-16 15:05:59

标签: php arrays

我有几个阵列。

阵列1

Array
(
    [0] => 501
    [1] => 502
    [2] => 503
    [3] => 505
)

数组2

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

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

)

现在我想要的数组结构应该是

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

        [1] => Array
            (
                [0] => 505
                [1] => 1
            )
        [2] => Array
            (
                [0] => 501
                [1] => 0
            )
        [3] => Array
            (
                [0] => 502
                [1] => 0
            )

    ) 

我的代码是

foreach($array1 as $k => $v)
{
    if( $array2[$k][0] == $v)
    {
        $finalArr[] = array($array2[$k][0],$array2[$k][1]);
    }
    else
    {
        $finalArr[] = array($v,0);
    }


}

现在它给了我正确的数组结构,但是两个数组中存在的元素都缺少值。

3 个答案:

答案 0 :(得分:1)

问题在于这一行:

if( $array2[$k][0] == $v)

$ k指的是$ array1的索引,而不是$ array2 ...所以除非两个数组中的元素完全同步,否则你的脚本将无效。

答案 1 :(得分:0)

试试这个:

$a_vals2 = array_map(
    function ($v) { return $v[1]; },
    $array2
);
$result = $array1;
foreach (array_diff($array1, $a_vals2) as $v) {
    $result[] = array($v, 0);
}

答案 2 :(得分:0)

if($ array2 [$ k] [0] == $ v)将永远不会返回true(对于提供的数组),因为您要一起检查数组的索引。例如,第二个索引上的503 == 501和505 == 502。在我看来,你的代码只会复制第一个数组(在本例中)。