我想知道是否可以合并两个看起来如此的数组:
$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))
因此,对于第一个数组,我希望值成为键,然后添加blah
和moreblah
,如果它们不在数组2中,则设置为0.对于数组2,如果是在示例数组2中有一个重复如c
只会覆盖c
索引并创建我上面写的输出。
这可能吗?如果可以,我可以使用内置方法,或者我必须使用for循环来尝试让它工作?
编辑:正如已经指出的那样是不可能的。有人可以解释我需要做什么类型的功能才能获得我想要的输出吗?
答案 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));
应该为您提供您想要的数组作为基础。然后,这是循环数据并在需要时添加它们的问题。