Как сохранить массив как значение ключа в другом массиве в PHP? - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь сохранить массив в качестве значения ключа в другом массиве.Я не могу использовать такие функции, как 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, поэтому это еще одна причина, по которой я знал, что там нет ошибок.

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

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

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

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

                          );

*

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

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

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

Рабочий код

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

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

                      );
0 голосов
/ 31 мая 2019

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

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

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