我有两个数组,我必须找到第二个数组键与第一个数组值相互比较。
第一个数组是
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
)
My trying code
$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 ;
}
}
}
}
第一个和第二个数组是多维的(数组内数组)。
你可以试着把它们弄平,使搜索更容易
$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 ...
}
}
首先,您必须将其与array_intersect()进行比较。然后,您可以使用reset()和end()来查找数组的第一个和最后一个值,示例如下:
<?php
$arr = array(1,5,6,8,9);
$first_array = reset($arr);
$last_array = end($arr);
?>
输出:1
9