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

时间:2012-03-01 13:38:28

标签: php

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

  3. 任何人都可以帮助我吗?谢谢!

    尝试了这个,但它没有纠正第一个要求

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

3 个答案:

答案 0 :(得分:2)

如果不满足1.和2.

function get_value( $array ){
    foreach( $array as $item ){
        if ( $item['on'] == 1 ){ return 1; }
        if ( $item['on'] != 2 ){ return FALSE; }
    }
    return 2;
}

答案 1 :(得分:0)

foreach($arrayelements as $arrayelement) {
    if($arrayelement['on'] == 2) {
        $result = 2;
        return $result;
    }

    if($arrayelement['on'] == 1) {
        $result = 1;
        return $result;
    }
}

答案 2 :(得分:0)

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

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