Я пытаюсь создать массив внутри массива, используя цикл for – вот мой код:
array( 'label' => 'Assign to user', 'desc' => 'Choose a user', 'id' => $prefix.'client', 'type' => 'radio' 'options' => array( foreach ($clients as $user) { $user->user_login => array ( 'label' => $user->user_login, 'value' => $user->user_login, ), } ) )
К сожалению, это дает мне
"Ошибка анализа: синтаксическая ошибка, неожиданный T_CONSTANT_ENCAPSED_STRING, ожидающий ')'"
Для линии:
'options' => array(
Я немного теряю то, что пошло не так – любая помощь очень ценится. $ clients определяется в другом месте, так что это не проблема.
Это недопустимый синтаксис. Сначала вам нужно будет создать «родительские» части массива. THEN добавьте в материал подматрицы с помощью цикла foreach:
$foo = array( 'label' => 'Assign to user', 'desc' => 'Choose a user', 'id' => $prefix.'client', 'type' => 'radio', 'options' => array() ); foreach ($clients as $user) { $foo['options'][] = array ( 'label' => $user->user_login, 'value' => $user->user_login, ); }
Вы используете foreach для доступа к данным, а не для определения его.
Попробуй это:
array( 'label' => 'Assign to user', 'desc' => 'Choose a user', 'id' => $prefix.'client', 'type' => 'radio' 'options' => $clients )
Если вам нужно изменить структуру данных для «параметров», сделайте это до определения первичного массива.
Вы не можете использовать foreach в определении массива. Тем не менее, вы можете поместить переменную $clients
в массив или вы можете зайти за пределы массива, чтобы построить массив, который будет вставлен в ключ options