PHP数组检查特定键中的值是否存在

时间:2015-05-12 10:05:55

标签: php arrays

我正在使用PHP 5.5.12

我有以下多维数组:

[
    {
        "id": 1,
        "type":"elephant", 
        "title":"Title of elephant"
    }, 
    {
        "id": 2,
        "type":"tiger", 
        "title":"Title of tiger"
    },
    {
        "id": 3,
        "type":"lion", 
        "title":"Title of lion",
        "children":[{
            "id": 4,
            "type":"cow", 
            "title":"Title of cow"
        },
        {
            "type":"elephant", 
            "title":"Title of elephant"
        },
        {
            "type":"buffalo", 
            "title":"Title of buffalo"
        }]
    }
]

我正在使用foreach循环迭代此数组。

数组键type必须位于elephanttigerlion中。如果没有,则结果应返回false

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

因此,您要检查$myArray是否包含值:

// first get all types as an array
$type = array_column($myArray, "type");

// specify allowed types values
$allowed_types = ["lion", "elephant", "tiger"];

$count = count($type);
$illegal = false;

// for loop is better
for($i = 0; $i < $count; $i++)
{
    // if current type value is not an element of allowed types
    // array, then both set the $illegal flag as true and break the 
    // loop
    if(!in_array($type[$i], $allowed_types)
        $illegal = true;
        break;
}

答案 1 :(得分:0)

由于您使用的是PHP5.5.12,因此可以使用array_column

$arr = json_decode($json, true);
//Walk through each element, only paying attention to type
array_walk( array_column($arr, 'type'), function($element, $k) use(&$arr) {
    $arr[$k]['valid_type'] = in_array($element, array('lion', 'tiger', 'elephant'));
});

从这里开始,数组中的每个元素($arr)都会有一个新的键valid_type,如果类型有效,则为10它不是。

https://eval.in/350322

答案 2 :(得分:-1)

这是你要找的东西吗?

foreach($your_array as $item) {
    if (!array_key_exists('type', $item)) {
    return FALSE;
    }
}

答案 3 :(得分:-1)

function keyExists($arr, $key) {
    $flag = true;

    foreach($arr as $v) {
        if(!isset($v[$key])) {
            $flag = false;
            break;
        }
    }

    return $flag;
}

希望这会有所帮助:)