我正在使用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
必须位于elephant
,tiger
和lion
中。如果没有,则结果应返回false
。
我怎样才能做到这一点?
答案 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
,如果类型有效,则为1
,0
它不是。
答案 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;
}
希望这会有所帮助:)