Доступ к данным из массива, перед началом которого есть INT

#php #arrays #multidimensional-array

#php #массивы #многомерный-массив

Вопрос:

Я извлекаю данные из API. Это происходит следующим образом:

     int(621)
    array(3) {
        ["self"]=>array(1) {["href"]=>string(28) "/inventory?pgsiz=100amp;pgnum=1"
      }
        ["next"]=>array(1) {["href"]=>string(28) "/inventory?pgsiz=100amp;pgnum=2"
      }
        ["item"]=>array(1) {["href"]=>string(0) ""
      }
    }
    array(1) {
        ["item"]=>
      array(100) {
        [0]=>
        array(25) {
          ["receiverId"]=>int(1623456)
          ["receivedDate"]=>string(22) "2020-07-27T07:37:43.73"
          ["receiveItemId"]=>int(132576)
          ["customerIdentifier"]=>array(2) { ...
 

Все, что я делаю, чтобы попытаться получить доступ к данным array(100) , завершается неудачей. Я думаю, это потому, что я пытаюсь перемещаться, как будто это многомерный массив, но на самом деле первый элемент в этих данных вообще не является массивом, это INT .

Как я могу пропустить int(621) , а также array(3) доступ item к and ?

Редактировать (print_r)::

 Array
(
    [totalResults] => 621
    [_links] => Array
        (
            [self] => Array
                (
                    [href] => /inventory?pgsiz=1000amp;pgnum=1
                )

            [item] => Array
                (
                    [href] => 
                )

        )

    [_embedded] => Array
        (
            [item] => Array
                (
                    [0] => Array
                        (
                            [receiverId] => 1623456
                            [receivedDate] => 2020-07-27T07:37:43.73
                            [receiveItemId] => 1623456
                            [customerIdentifier] => Array ...
 

Комментарии:

1. Можете ли вы показать нам простой print_r($YOUR_ARRAY) вывод

2. Может быть проще просто показать нам ответ от API без каких-либо проблем

3. Кажется, что это обычный массив с числовой индексацией. Таким образом, целое число должно быть at [0] , следующий массив at [1] и так далее.

4. @RiggsFolly при добавлении print_r($YOUR_ARRAY) я обнаружил foreach(), который выполнялся как часть кода, подключенного к API. Я удалил это и запустил print_r right, поскольку он поступает из API.

5. @El_Vanja, я тоже так думал, но я продолжаю получать Undefined offset: 0 при попытке увидеть, что представляет собой первый элемент массива в качестве простого теста.

Ответ №1:

Я предполагаю, что вы хотите просмотреть все 100 случаев, поэтому что-то вроде этого поможет вам начать

 foreach( $arr['__embedded']['item'] as $occ ) {
    echo $occ['receiverId'];
}
 

Обратите внимание, [customerIdentifier] что, по-видимому, также есть другой массив, но вы не показали, что происходит после этого, так что все это ваше для изучения

Комментарии:

1. Я попробовал это, и я получаю: Undefined index: _embeded .

2. Я понял, спасибо. В вашем примере пропущена буква «d» во встроенном. Я принимаю ваш ответ!

3. Упс, моя ошибка. Исправлено