数组内的Foreach循环

问题描述 投票:0回答:4

我正在尝试使用 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 在别处定义,所以这不是问题。

php arrays foreach
4个回答
26
投票

这是无效的语法。您必须首先构建数组的“父”部分。然后使用 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,
    );
}

2
投票

您使用 foreach 来访问数据,而不是定义它。

试试这个:

array(
    'label' => 'Assign to user',
    'desc' => 'Choose a user',
    'id' => $prefix.'client',
    'type' => 'radio'
    'options' => $clients
    )

如果您需要更改“选项”的数据结构,请在定义主数组之前执行此操作。


1
投票

不能在数组的定义中使用foreach。但是,您可以将

$clients
变量放入数组本身,也可以在数组外部进行 foreach 来构建要在
options
键处插入的数组


0
投票

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
    )
];
© www.soinside.com 2019 - 2024. All rights reserved.