Я упомянул это странное поведение при фильтрации моей коллекции.
Давайте предположим, что я получил этот массив:
[
"value" => 1,
"available" => false,
],
[
"value" => 3,
"available" => false,
],
[
"value" => 6,
"available" => false,
],
[
"value" => 12,
"available" => true,
],
[
"value" => 24,
"available" => false,
],
Если я теперь использую это для фильтрации всех элементов, где доступно true
:
collect($prod->items)->filter(function (
$item
) {
if (is_array($item)) {
return $item['available'] === true;
}
if (is_object($item)) {
return $item->available === true;
}
return false;
});
я получаю этот результат:
=> Illuminate\Support\Collection {#1010
all: [
3 => [
"value" => 12,
"available" => true,
],
],
}
Если имеется более одного элемента true
, я получаю этот результат:
=> Illuminate\Support\Collection {#1006
all: [
[
"value" => 1,
"available" => true,
],
[
"value" => 3,
"available" => true,
],
[
"value" => 6,
"available" => true,
],
[
"value" => 12,
"available" => true,
],
[
"value" => 24,
"available" => true,
],
],
}
Вы видели, что индекс (первый пример: 3
) здесь отсутствует? Как я всегда могу быть уверен, что индекса нет?
Причина, по которой мне это нужно: я использую результат в ответе API, который используется vue -app. vue -app перебирает массив и печатает значение - но если в результате к префиксу добавляется дополнительный ключ, приложение вылетает.