在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'])) {