访问包含值的foreach数组时出现问题

时间:2019-02-25 04:38:45

标签: php

foreach($ev as $evn){
    $events[]=array("event"=>$evn['EVTID']);
}

输出:

Array ( [0] => Array ( [event] => 3 ) [1] => Array ( [event] => 2 ) )

我需要检查

if(in_array(3, $events, true)) {
     echo "'3' found with strict check\n"
}
else {
    echo "fail";
}

数组中存在3个元素,但结果失败

1 个答案:

答案 0 :(得分:2)

您需要使用array_column直接访问event列中的值。试试这个:

if(in_array(3, array_column($events, 'event'), true)) {
     echo "'3' found with strict check\n";
}
else {
    echo "fail";
}

Demo on 3v4l.org

请注意,如果strict参数设置为true,则3的值将与字符串'3'不匹配。如果您的数组中包含字符串值,则需要删除strict检查,即

if(in_array(3, array_column($events, 'event'))) {

或将搜索值更改为'3',即

if(in_array('3', array_column($events, 'event'), true)) {

或者,您可以通过更改以下行来确保数组中的值为整数:

$events[]=array("event"=>$evn['EVTID']);

$events[]=array("event"=>(int)$evn['EVTID']);