我有两个数组,我必须找到第二个数组键,第一个数组值相互比较。
我的第一个数组是
Array
(
[0] => Array
(
[C10359] => Array
(
[0] => 89785
[1] => 89786
[2] => 89857
)
[C10899] => Array
(
[0] => 52924
[1] => 52945
[2] => 52975
)
)
[1] => Array
(
[C10370] => Array
(
[0] => 89785
[1] => 89786
[2] => 89857
)
[C10988] => Array
(
[0] => 52924
[1] => 52945
[2] => 52975
)
)
)
我的第二个数组是
Array
(
[0] => Array
(
[C10359] => 89860.5
[C10899] => 53079
)
[1] => Array
(
[C10988] => 89860.5
[C10111] => 53079
)
)
我必须在第一个数组中找到第二个数组键 C10359 。如果匹配,那么我想要这个数组的第一个和最后一个值
[C10359] => Array
(
[0] => 89785
[1] => 89786
[2] => 89857
)
我尝试过的代码
$vals = array();
foreach ($first_array as $k => $v) {
foreach($v as $key=>$val) {
if (in_array($val, $second_array)) {
$value = abs((($val - $second_array)/$second_array)*100);
if($value < 25){
return $vals ;
}
}
}
}
答案 0 :(得分:1)
第一个和第二个数组是多维的:(数组内部的数组)。
您可以尝试展平它们以使搜索更容易
$first_array_flat = array();
foreach($first_array as $a){
$first_array_flat += $a;
}
$second_array_flat = array();
foreach($second_array as $a){
$second_array_flat += $a;
}
foreach($second_array_flat as $k=>$v){
if(isset($first_array_flat[$k])){
$a = $first_array_flat[$k];
$first_v = reset($a);
$last_v = end($a);
#..... do your stuff here ...
}
}
答案 1 :(得分:0)
首先,您必须将其与array_intersect()进行比较。然后,您可以使用reset()和end()来查找数组的第一个和最后一个值,例如:
<?php
$arr = array(1,5,6,8,9);
$first_array = reset($arr);
$last_array = end($arr);
?>
输出:
1
9