Проблема многомерного массива с неопределенным индексом - PullRequest
5 голосов
/ 23 августа 2011

Я получаю многомерный массив из формы HTML.Когда я хочу получить одно значение, например,

$chapters = $_POST["chapters"];

echo $chapters[0]["title"];

, оно говорит неопределенный индекс title.

Когда я печатаю массив, он отображается как

Array
(
    [chapters] => Array
        (
            [0] => Array
                (
                    ['title'] => this is title
                    ['text'] => this is text
                    ['photo'] => this is photo source
                    ['photo_caption'] => photo caption
                )

        )
)

Ответы [ 3 ]

5 голосов
/ 24 августа 2011

Судя по вашим комментариям, проблема выглядит следующим образом:

print_r никогда не печатает кавычки для строковых ключей. Если вы как-то не манипулировали с выводом, то это может означать только то, что одинарные кавычки на самом деле являются частью ключа.

Это должно работать:

echo $chapters[0]["'title'"];

но лучше почините ключи.

Из вашего комментария:

проблема заключалась в том, что я использовал одинарные кавычки (name="chapter[0]['photo_caption']") в виде html, исправленные до name="chapter[0][photo_caption]" решили проблему

4 голосов
/ 23 августа 2011

Согласно вашему выводу, вы должны использовать $chapters["chapters"][0]["title"].

Обратите внимание, что у вас есть 3 вложенных массива на выходе, поэтому вам нужно пройти 3 уровня в глубину, чтобы получить значение.

0 голосов
/ 16 февраля 2016

Да, я столкнулся с той же проблемой. Тогда я понял, что я неправильно делал с ключами. На самом деле, я использовал кавычку, называя элементы формы массивом

ПРИМЕР-

echo "<input type='hidden' name= userprogramscholarship[$user->id]['checkstatus'] value= $val />";

Я исправил и удалил кавычки, как показано ниже

echo "<input type='hidden' name= userprogramscholarship[$user->id][checkstatus] value= $val />";

Это была незначительная ошибка. Удалил цитаты и все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...