如何检查数组子值上的所有元素是否都等于一个值


how to check if all elements on subvalue of array is equal to a value

Array
(
    [0] => Array
        (
            [id] => 10
            [on] => 2
        )
    [1] => Array
        (
            [id] => 15
            [on] => 2
        )
    [2] => Array
        (
            [id] => 20
            [on] => 2
        )
)

我想要以下内容:

  1. 如果[on]=>2所有子数组,则返回 $result = 2

  2. 如果其中一个子数组有 [on]=>1 ,则返回 $result = 1

谁能帮我?谢谢!

试过这个,但它不能纠正第一个要求

foreach($arr as $key=>$val){
    if(in_array(2, $val)){
        $result =  2;
    }else if(in_array(1, $val)){
        $result =  1;
    }
}

如果 1. 和 2. 都不符合

怎么办
function get_value( $array ){
    foreach( $array as $item ){
        if ( $item['on'] == 1 ){ return 1; }
        if ( $item['on'] != 2 ){ return FALSE; }
    }
    return 2;
}
foreach($arrayelements as $arrayelement) {
    if($arrayelement['on'] == 2) {
        $result = 2;
        return $result;
    }
    if($arrayelement['on'] == 1) {
        $result = 1;
        return $result;
    }
}

有几种方法可以解决您的问题:这是我的! :)
使用以下函数,如果两者都不满足,您将获得一个不需要的值数组。
在这种情况下,您可能会更准确地告诉我们您希望获得什么。

function my_check($array, $desired_value_for_all, $known_unwanted_value)
{
    $not_desired = array_diff(
        array_unique(
            array_map(
                create_function(
                    '$nested',
                    'return $nested["on"];'
                ),
                $array
            )
        ),
        array($desired_value_for_all)
    );
    if (empty($not_desired))
        return $desired_value_for_all;
    elseif (in_array($known_unwanted_value, $not_desired))
        return $known_unwanted_value;
    else
        return $not_desired;
}

示例 1:

$array = array
(
    array
    (
        'id' => 10,
        'on' => 2
    ),
    array
    (
        'id' => 15,
        'on' => 2
    ),
    array
    (
        'id' => 20,
        'on' => 2
    )
);
var_dump(my_check($array, 2, 1));
Output:
int 2

示例 2:

$array = array
(
    array
    (
        'id' => 10,
        'on' => 2
    ),
    array
    (
        'id' => 15,
        'on' => 1
    ),
    array
    (
        'id' => 20,
        'on' => 2
    )
);
var_dump(my_check($array, 2, 1));
Output:
int 1

示例 3:

$array = array
(
    array
    (
        'id' => 10,
        'on' => 4
    ),
    array
    (
        'id' => 15,
        'on' => 2
    ),
    array
    (
        'id' => 20,
        'on' => 3
    )
);
var_dump(my_check($array, 2, 1));
Output:
array
    0 => int 4
    2 => int 3