我正在尝试使用 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
在别处定义,所以这不是问题。
这是无效的语法。您必须首先构建数组的“父”部分。然后使用 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
变量放入数组本身,也可以在数组外部进行 foreach 来构建要在 options
键处插入的数组
array_map()
将优雅地允许您动态填充子数组,而无需打破原始数组。 演示
$result = [
'label' => 'Assign to user',
'desc' => 'Choose a user',
'id' => $prefix . 'client',
'type' => 'radio',
'options' => array_map(
fn($user) => [
'label' => $user->user_login,
'value' => $user->user_login,
],
$clients
)
];