将键分配给数组值
Assign key to array values
我有一个从堆栈溢出中获得的函数:-
function testFunction($a, $b) {
$map = array();
foreach($a as $name => $value){
if(!isset($b[$name]) || $b[$name] != $value) {
$map[$value] = 1;
}
}
return array_keys($map);
}
$array1 = array("Peter"=>"35", "Ben"=>"21", "Joe"=>"43");
$array2 = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"57");
print_r(testFunction($array2, $array1));
这是我得到的结果:
Array ( [0] => 37 [1] => 57 )
因为第二个数组中的 37 与第一个数组中的 21 不同...并且 57 与 43 不同。
我的问题是:如何向值添加键?例如,我想要这个:
Array ("Ben"=>"37", "Joe"=>"57");
你可以像下面那样做:-
<?php
function testFunction($a, $b) {
$map = array();
foreach($a as $name => $value){
if(!isset($b[$name]) || $b[$name] != $value) {
$map[$name] = $value; // make key value array
}
}
return $map;
}
$array1 = array("Peter"=>"35", "Ben"=>"21", "Joe"=>"43");
$array2 = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"57");
print_r(testFunction($array2, $array1));
使用 array_intersect_key
和 array_diff
函数的简短优化解决方案:
$array1 = ["Peter"=>"35", "Ben"=>"21", "Joe"=>"43"];
$array2 = ["Peter"=>"35", "Ben"=>"37", "Joe"=>"57", 'I'=>0];
// getting all $array2 items with coincident keys
$common_key_items = array_intersect_key($array2, $array1);
// getting value difference between arrays with same keys
$result = array_diff($common_key_items, $array1);
print_r($result);
输出:
Array
(
[Ben] => 37
[Joe] => 57
)
我有一个从堆栈溢出中获得的函数:-
function testFunction($a, $b) {
$map = array();
foreach($a as $name => $value){
if(!isset($b[$name]) || $b[$name] != $value) {
$map[$value] = 1;
}
}
return array_keys($map);
}
$array1 = array("Peter"=>"35", "Ben"=>"21", "Joe"=>"43");
$array2 = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"57");
print_r(testFunction($array2, $array1));
这是我得到的结果:
Array ( [0] => 37 [1] => 57 )
因为第二个数组中的 37 与第一个数组中的 21 不同...并且 57 与 43 不同。
我的问题是:如何向值添加键?例如,我想要这个:
Array ("Ben"=>"37", "Joe"=>"57");
你可以像下面那样做:-
<?php
function testFunction($a, $b) {
$map = array();
foreach($a as $name => $value){
if(!isset($b[$name]) || $b[$name] != $value) {
$map[$name] = $value; // make key value array
}
}
return $map;
}
$array1 = array("Peter"=>"35", "Ben"=>"21", "Joe"=>"43");
$array2 = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"57");
print_r(testFunction($array2, $array1));
使用 array_intersect_key
和 array_diff
函数的简短优化解决方案:
$array1 = ["Peter"=>"35", "Ben"=>"21", "Joe"=>"43"];
$array2 = ["Peter"=>"35", "Ben"=>"37", "Joe"=>"57", 'I'=>0];
// getting all $array2 items with coincident keys
$common_key_items = array_intersect_key($array2, $array1);
// getting value difference between arrays with same keys
$result = array_diff($common_key_items, $array1);
print_r($result);
输出:
Array
(
[Ben] => 37
[Joe] => 57
)