Создайте условие, чтобы проверить, имеет ли массив значение в Laravel - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать условие, чтобы проверить, все ли значения в массиве равны 0. Вот пример массива.

array:4 [▼
  0 => "0"
  1 => "100"
  2 => "200"
  3 => "100"
]

Вот условие, которое я пытаюсь исправить

    //update the status of the order
    if(empty($input['remainingDeliveries'])) {
        $order_idAcceptedItem = $acceptItem['order_id'];
        $setStatus = \App\Orders::where('id', '=', $order_idAcceptedItem)->first();
        if ($setStatus)
        {
            $setStatus->status_id = 3;
        }      
        $setStatus->save();

$input['remainingDeliveries'], содержащий массив.

    } else {
        $order_idAcceptedItem = $acceptItem['order_id'];
        $setStatus = \App\Orders::where('id', '=', $order_idAcceptedItem)->first();
        if ($setStatus)
        {
            $setStatus->status_id = 4;
        }      
        $setStatus->save();
    }

Сначала я думал, что мое состояние в порядке, но когда я пытаюсь создать запись с этим значением массива,

array:4 [▼
  0 => "152"
  1 => "0"
  2 => "0"
  3 => "0"
]

запускает ELSE

как правильно это сделать?заранее спасибо!

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Вы можете попробовать класс Collection Laravel, чтобы проверить массив:

if( collect($input['remainingDeliveries'])->every(function($value, $key){
    return $value == '0';
}) ) {
    // they are all '0'
}

https://laravel.com/docs/5.8/collections#method-every

1 голос
/ 14 марта 2019

Попробуйте

// Filter. The $result array will be empty if all values equal "0".
$result = array_filter($inputArray, function($item) {
    // This should return a boolean value. True means discard, false means keep.
    return $item === '0';
});
if(!count($result)) {
  // all empty thus everything was "0".
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...