如何比较两个并找到第一个数组的第一个和最后一个值

时间:2016-09-19 11:44:23

标签: php arrays multidimensional-array

我有两个数组,我必须找到第二个数组键,第一个数组值相互比较。

我的第一个数组是

    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 ;
                    }
            }
        } 
    }

2 个答案:

答案 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