Как получить значение по ключу из вложенного массива?

В Laravel с помощью построителя запросов получаю коллекцию $cena_put,

$product1 = $cena_put->whereIn('id', 71484);

но у неё индекс каждый раз меняется при перезагрузки страницы

введите сюда описание изображения

введите сюда описание изображения

Нашел способ получить доступ к вложенному массиву с помощью foreach:

foreach ($product1 as $item)
        {
            print_r($item->cena);
            echo '<pre>';
            print_r($cena_put);
            echo '</pre>';
        }

Однако способ с foreach мне не совсем нравится, есть ли другой способ получить значение из вложенного массива, минуя его индекс, ибо он генерируется каждый раз по новой при перезагрузки страницы, и возможно ли это?


Ответы (1 шт):

Автор решения: Михаил Ребров

Допустим у Вас есть переменная $items типа Illuminate\Support\Collection

Вариант №1

Как верно заметил @u_mulder, если Вам просто нужно получить первый элемент - вы можете воспользоваться методом first

$first = $items->first();

Вариант №2

Если Вам нужно получить массив с более подходящими для работы ключами, то вы просто можете получить список значений коллекции без привязки к старым ключам с помощью метода values(). Фактически это обертка над функцией array_values(см документацию https://www.php.net/manual/ru/function.array-values)

Таким образом Вы можете получить массив со всеми значениями(без сохранения прежних ключей) и там уже у вас будут обычные ключи, начинающиеся с нуля (0,1,2,...);

И получить элемент можно будет по индексу 0,1,...

$first = $items->values()[0];
$second = $items->values()[1];
// ...

Вариант №3

Также вы можете получить все значения коллекции с помощью метода all() и уже над этим массивом пытаться проводить эксперименты. Например с помощью array_key_first узнать ключ первого элемента. И получить его из коллекции по индексу или же получить массив всех ключей с помощью функции array_keys(https://www.php.net/manual/ru/function.array-keys.php) и получать нужные ключи по все тем же ключам 0,1,2,...

$all = $items->all();

$firstKey = array_key_first($all);
$first = $items->get($firstKey);

$keys = array_keys($all);
$second = $items->get($keys[1]);
$third = $items->get($keys[2]);
// ...
→ Ссылка