[英]Checking if an array within an array is empty/null in PHP
我正在檢查數組是否包含一些東西,並且其中的數組為空。 我該如何實現?
我試過檢查是否為empty
, inArray
和inArray
的常規條件。
數組的屏幕截圖( assignedTo
,如果為true,則必須為null / empty):
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']
]);
//Verwekt de data gekregen van de API
$json = (string)$response->getBody()->getContents();
$decoded = json_decode($json, true);
//Haalt de lengte van de result array op
$arrayLength = sizeof($decoded['tickets']);
//Slaat de resultaten op in de bijbehorende variabele. De if statement loopt nog na of de tickets écht aan de filters voldoen. Het komt nog wel eens voor dat er tickets worden opgehaald die niet opgehaald moeten worden volgens de filters.
for($int = 0; $int < $arrayLength; $int++) {
if($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];
}
}
注意:-由於操作員優先,您遇到了問題。
空工作完全正常,我認為問題在於邏輯運算符及其順序
您需要在其中加上括號
if (($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting on customer') && empty($decoded['tickets'][$int]['assignedTo'])) {
這將檢查狀態是active
還是waiting on customer
assignedTo
不為空
應該這樣工作
if(in_array($decoded['tickets'][$int]['status'],['active','waiting on customer']) && empty($decoded['tickets'][$int]['assignedTo']))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.