Php 仅当两个数组的键索引匹配时才组合它们
我想组合这些数组:Php 仅当两个数组的键索引匹配时才组合它们,php,arrays,Php,Arrays,我想组合这些数组: $arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d"); $arr2 = array(1 => 5, 3 => 7, 4 => 9); $arr3 = array("a" => 5, "c" => 7, d => 9); 我想要这个: $arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d"
$arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d");
$arr2 = array(1 => 5, 3 => 7, 4 => 9);
$arr3 = array("a" => 5, "c" => 7, d => 9);
我想要这个:
$arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d");
$arr2 = array(1 => 5, 3 => 7, 4 => 9);
$arr3 = array("a" => 5, "c" => 7, d => 9);
我想忽略$arr1上的键索引“2”,因为它在$arr2上不存在
因此,我只想在键索引匹配的情况下进行组合,只组合具有相同原始键的值。给你
<?php
$arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d");
$arr2 = array(1 => 5, 3 => 7, 4 => 9);
$arr3 = array();
foreach ($arr1 as $key => $value) {
if(isset($arr2[$key])){
$arr3[$value] = $arr2[$key];
}
}
print_r($arr3);
?>
您可以这样做,它没有经过测试,但我认为它可以工作。阿德里安说的话看起来更好。我没有使用foreach($array as$key=>$val)。那更好 试试这个 使用“数组\密钥\存在”
数组([a]=>5[c]=>7[d]=>9)您可以尝试以下方法:
function combineArrays( $array1, $array2 ){
$array3 = array();
foreach ($array1 as $key => $value) {
if( isset($array2[$key]) ) { $array3[$value] = $array2[$key]; }
}
return $array3;
}
像这样使用它:
$arr3 = combineArrays($arr1, $arr2);
试试这个:
$arr1 = array(1 => "a", 2 => "b", 3 => "c", 4 => "d");
$arr2 = array(1 => 5, 3 => 7, 4 => 9);
$result = array_combine(array_intersect_key($arr1, $arr2), $arr2);
产生:
Array
(
[a] => 5
[c] => 7
[d] => 9
)
使用数组\u键的简单方法\u存在: $arr1=数组(1=>“a”,2=>“b”,3=>“c”,4=>“d”) $arr2=数组(1=>5,3=>7,4=>9)
数组([a]=>5[c]=>7[d]=>9)你试过什么吗?
$res=[];foreach($arr2 as$k=>$v){$res[$arr1[$k]]]=$v;}
在$arr2之间循环更符合逻辑。在这种情况下没有关系,但在更大的阵列中效率更高。您好@Christian,您说得对,在这种情况下更符合逻辑,我更新了我的答案,谢谢。
$new = array();
foreach ($arr2 as $key => $value) {
if(array_key_exists($key, $arr1)) {
$array[$arr1[$key]] = $arr2[$key];
}
}
print_r($array);