说我有两个数组:
$array1
Array
(
[app] => Array
(
[name] => PunchClock
[shifts] => Array
(
[maxhours] => 16
[minhours] => 4
)
[con] => Array
(
[moog] => 3
)
)
)
和 $array2
Array
(
[app] => Array
(
[name] =>
)
)
我试图找到一种方法来使用第二个数组,以便从第一个数组中获取相应的值。例如,如果我打电话:
$value = $array2['app']['name']
相应的值是PunchClock。如果我选择$array2['app']['shifts']
,相应的值将返回包含maxhours
和minhours
的数组。我尝试过相交阵列,但没有到达任何地方。我在递归中运行它,但它变得非常混乱。我不知道此时还有哪些其他选择。任何帮助将不胜感激。
答案 0 :(得分:0)
你需要这样的东西吗?
function find($array1, $array2){
foreach($array1 as $key => $value){
if($value == null){
return $array2[$key];
} elseif(is_array($value)){
return find($array2[$key], $value);
} else {
throw new Exception("value not found");
}
}
}
当你像这样使用它时:
$array1 = array(
'app'=> array(
'name' => 'punchClock',
'shifts' => array(
)
)
);
$array2 = array(
'app'=> array(
'name' => null
)
);
echo find($array1,$array2);
它会打印punchClock
答案 1 :(得分:0)
function array_intersect_keys_recursive($a, $b)
{
$r = array();
foreach ($a as $k => $v)
{
if (is_array($a[$k]) && isset($b[$k]) && is_array($b[$k]))
{
$r[$k] = array_intersect_keys_recursive($a[$k], $b[$k]);
continue;
}
if (isset($a[$k]) && isset($b[$k]))
{
$r[$k] = $a[$k];
}
}
return $r;
}
$a = Array
(
'app' => Array
(
'name' => 'PunchClock',
'shifts' => Array
(
'maxhours' => 16,
'minhours' => 4
),
'con' => Array
(
'moog' => 3
)
)
);
$b = Array
(
'app' => Array
(
'name' => ''
)
);
$c = array_intersect_keys_recursive($a, $b);
print_r($c);
以上示例将输出:
Array
(
[app] => Array
(
[name] => PunchClock
)
)
答案 2 :(得分:0)
检查以下代码
$array1['app']['name'] = 'Punch Clock';
$array1['app']['shift'] = array("maxhours" => "16", "minhours", "4");
$array1['app']['con'] = 'Moog';
$array2['app']['shift'] = array("maxhours" => "16", "minhours", "4");
$result=array_intersect($array2,$array1);
Array
(
[app] => Array
(
[shift] => Array
(
[maxhours] => 16
[0] => minhours
[1] => 4
)
)
)