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

时间:2019-04-16 11:36:47

标签: php arrays laravel

我正在检查数组是否包含一些东西,并且其中的数组为空。我该如何实现?

我尝试检查#include <stdio.h> int main(){ union floatint { int i; float f; }; union floatint a; a.i=0xf6C0D0D3;// 1111 0110 1100 0000 1101 0000 1101 0011 union floatint b; b.i=0x772A1396;// 0111 0111 0010 1010 0001 0011 1001 0110 union floatint c; c.f=a.f+b.f; printf("0x%x\n",c.i); // gives 0x76935659 = 0111 0110 1001 0011 0101 0110 0101 1001=0 11101101 00100110101011001011001 } empty以及if中的常规条件。

数组(inArray的屏幕快照,必须为null / empty以使if为true)

enter image description here

assignedTo

因此,我希望在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]; } } } 为空时执行if。当前,它既有分配的票证,也有没有分配的票证。

3 个答案:

答案 0 :(得分:1)

尝试将||条件包装成一个,然后向其中添加&&:-

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];
    }
}

注意:-由于Operator Precedence,您遇到了问题。

答案 1 :(得分:1)

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

您需要在其中放置括号

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

这将检查状态为active还是waiting on customer并且assignedTo不为空

答案 2 :(得分:0)

应该这样

if(in_array($decoded['tickets'][$int]['status'],['active','waiting on customer']) && empty($decoded['tickets'][$int]['assignedTo']))