在PHP中检查数组中的数组是否为空/空

在PHP中检查数组中的数组是否为空/空,php,arrays,laravel,Php,Arrays,Laravel,我正在检查一个数组是否包含一些内容,而其中的一个数组是空的。我如何做到这一点 我试着在empty、inaray和if中的常规条件下检查它 数组的屏幕截图(分配给,需要为null/空才能使if为true): for($i=1;$ipages['maxPages']+1;$i++){ $response=$this->client->get('v1/tickets/search.json'[ 'query'=>['page'=>$i',assignedTo[]'=>null',statuses[]

我正在检查一个数组是否包含一些内容,而其中的一个数组是空的。我如何做到这一点

我试着在
empty
inaray
和if中的常规条件下检查它

数组的屏幕截图(
分配给
,需要为null/空才能使if为true):

for($i=1;$i<$this->pages['maxPages']+1;$i++){
$response=$this->client->get('v1/tickets/search.json'[
'query'=>['page'=>$i',assignedTo[]'=>null',statuses[]'=>'active','waiting','sortDir'=>'desc','sortBy'=>'updatedAt']
]);
//数据收集中心(gekregen van de API)
$json=(字符串)$response->getBody()->getContents();
$decoded=json_decode($json,true);
//Haalt de lengte van de result array op
$arrayLength=sizeof($decoded['tickets']);
//在变量中删除结果。如果语句循环不包含过滤器卷,则不会使用过滤器卷中的票证字。如果语句循环不包含过滤器卷中的票证字,则不会使用过滤器卷中的票证字。
对于($int=0;$int<$arrayLength;$int++){
如果($decoded['tickets'][$int]['status']==='active'| |$decoded['tickets'][$int]['status']==='waiting on customer'&&empty($decoded['tickets'][$int]['assignedTo']){
$newticketamount++;
$activetickets[]=$decoded['tickets'][$int];
}
}
}

因此,我希望在
$decoded['tickets'][$int]['assignedTo']
为空时执行if。目前,它既有已分配的票证,也有未分配的票证。

尝试将
|
条件包装为一个,然后添加
&
:-

if( empty( $decoded['tickets'][$int]['assignedTo'] ) && ($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting on customer')){

    $newticketamount++;
    $activetickets[] = $decoded['tickets'][$int];
}
甚至是更好的方法[为了可读性和更好的实现]

if( empty( $decoded['tickets'][$int]['assignedTo'] ) ){

    if( ($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting on customer')){

        $newticketamount++;
        $activetickets[] = $decoded['tickets'][$int];
    }
}
注意:-因为您面临问题。

应该这样工作


如果(在数组中($decoded['tickets'][$int]['status']、['active'、'waiting on customer'])&empty($decoded['tickets'][$int]['assignedTo'])

empty工作得很好,我认为问题在于逻辑运算符及其顺序

你需要把括号放在那里

if (($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting on customer') && empty($decoded['tickets'][$int]['assignedTo'])) {                    

这将检查状态是否为
活动
等待客户
,以及
分配给
的状态是否为空

如我所述,可能重复@devgianlu。empty()不起作用。如果您再往下看,一些用户建议使用
isset
。但无论如何,我认为解决方案已经在这里提供了。在OR语句周围添加一些()完成了一些技巧,这非常有效!非常感谢。你能告诉我为什么必须把它放在()之间吗?@ScottvanDuin为此加了一张便条。本来要放的,但我忘了,对不起@ScottvanDuin没问题,很高兴帮助你:):)
if (($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting on customer') && empty($decoded['tickets'][$int]['assignedTo'])) {