当数组没有值时使用数组合并

时间:2014-02-28 14:43:59

标签: php arrays

我想知道是否可以合并两个看起来如此的数组:

$array1 = array("a","b","c");
$array2 = array('c'=>array("blah"=>"5", "moreblah"=>"5"));
$merge = array_merge($array1,$array2);
print_r($merge);

运行它会给我输出结果:

Array ( [0] => a [1] => b [2] => c [c] => Array ( [blah] => 5 [moreblah] => 5 ) )

但我想要的输出与此类似:

Array( [a]=>Array([blah]=>0, [moreblah]=>0), [b]=>Array([blah]=>0, [moreblah]=>0), [c]=>Array([blah]=>5, [moreblah]=>5))

因此,对于第一个数组,我希望值成为键,然后添加blahmoreblah,如果它们不在数组2中,则设置为0.对于数组2,如果是在示例数组2中有一个重复如c只会覆盖c索引并创建我上面写的输出。

这可能吗?如果可以,我可以使用内置方法,或者我必须使用for循环来尝试让它工作?

编辑:正如已经指出的那样是不可能的。有人可以解释我需要做什么类型的功能才能获得我想要的输出吗?

2 个答案:

答案 0 :(得分:1)

类似的东西:

编辑:这只有在您知道第二个数组中的键时才有效,这是否已知?否则我改变代码..

$array1 = array("a", "b", "c");
$array2 = array('c' => array("blah" => "5", "moreblah" => "5"));

$newArray = "";

foreach ($array1 as $a1) {
    if (key_exists($a1, $array2)) {
        //check if blah and / or moreblah is set else set the value to 0 or something else
        if (key_exists("blah", $array2[$a1])) {
            $blah = $array2[$a1]["blah"];
        } else {
            $blah = 0;
        }

        if (key_exists("moreblah", $array2[$a1])) {
            $moreblah = $array2[$a1]["moreblah"];
        } else {
            $moreblah = 0;
        }


        $newArray[$a1] = array("blah" => $blah, "moreblah" => $moreblah);
    } else {
        $newArray[$a1] = array("blah" => 0, "moreblah" => 0);
    }
}

答案 1 :(得分:0)

$array1 = array("a", "b", "c");
$structured = array_fill_keys($array1, array('blah' => 0, 'moreblah' => 0));

应该为您提供您想要的数组作为基础。然后,这是循环数据并在需要时添加它们的问题。