Я пытаюсь сохранить массив в качестве значения ключа в другом массиве. Я не могу использовать такие функции, как array_push () или цикл for, потому что второй массив создается как параметр функции.

Я часами гуглил и не могу найти ответов! Я новичок в PHP, поэтому я понятия не имею, возможно ли это вообще.

Первый массив выглядит примерно так:

    $choices[] = array('1'=>'Blue','2'=>'Red)

РЕДАКТИРОВАТЬ: это код, который я хотел добавить

    $choices[] = array('1'=>'Blue','2'=>'Red');

Отсутствие ' и ; были опечаткой. Массив создается гораздо более сложным способом. В моей попытке абстрагировать и упростить его, чтобы опубликовать здесь, я пропустил ' и ;. Слава @ diéfani-favareto-piovezan за то, что заметил это.

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

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' =>  ,
                                  )

                          )

Я хочу, чтобы массив $choices был значением ключа 'c'.

Я пробовал это

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  ),

                          )

Но это дает мне ошибку

РЕДАКТИРОВАТЬ: Я хотел сказать, что я попробовал это

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  )

                          )

Еще раз, при попытке абстрагироваться и упростить (фактический массив, созданный в RandomFunction, имеет около 250 строк), я добавил дополнительную запятую по ошибке. Престижность @brevis, @Nick и @tim за то, что они обнаружили это и привлекли мое внимание.

    Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ')' in /filename.php line 120

Ошибка упоминает еще одну строку кода, но я знаю, что это не причина, потому что если я удаляю

                                   'c' => $choices,

Ошибки нет.

РЕДАКТИРОВАТЬ: Я хотел сказать «прежде чем я добавил строку 'c'» (а не «если я удалю ее»), ошибок не было. Я также мог бы добавить, что создание $choices предшествует массиву randomFunction, так что это еще одна причина, по которой я знал, что там нет ошибок.

< EM> ВЫВОД : Как я уже упоминал, ошибка была лишней ), после строки 'c', которую я не смог воспроизвести здесь, пытаясь упростить код. Я думаю, что когда я добавил строку 'c' в мой фактический код, я должен был добавить дополнительный ), по ошибке. Я смог найти это только потому, что @nick сказал, что код randomFunction (тот, что после «Я попробовал это») должен работать. Это был ответ, который мне нужен, чтобы подтвердить, что ошибка не в этой строке. Благодаря комментарию @ dont-panic я более внимательно изучил полученное сообщение об ошибке и нашел лишний )'. В конце концов, каждый помог мне. Так что спасибо всем!

Для всех, кто сталкивался с этим, рабочий код :

    $choices[] = array('1'=>'Blue','2'=>'Red');

     return randomFunction('random text', array(
                                   'a' => 'apple',
                                   'b' => 'banana',
                                   'c' => $choices,
                                  )

                          );

*

1
Maira Bay 31 Май 2019 в 02:14

2 ответа

Лучший ответ

Хорошо, я нашел ошибку:

Я добавил дополнительный ), в конце второго массива.

Рабочий код

$choices[] = array('1'=>'Blue','2'=>'Red');

 return randomFunction('random text', array(
                               'a' => 'apple',
                               'b' => 'banana',
                               'c' => $choices,
                              )

                      );
0
Maira Bay 31 Май 2019 в 01:40

В вашем коде отсутствует одна кавычка и точка с запятой после Красного.

Попробуйте это и посмотрите, работает ли это:

$choices[] = array('1'=>'Blue','2'=>'Red');
0
Diéfani Favareto Piovezan 30 Май 2019 в 23:30
56386792