簡體   English   中英

檢查數組中的數組在PHP中是否為空/空

[英]Checking if an array within an array is empty/null in PHP

我正在檢查數組是否包含一些東西,並且其中的數組為空。 我該如何實現?

我試過檢查是否為emptyinArrayinArray的常規條件。

數組的屏幕截圖( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM