14

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 は別の場所で定義されているため、それは問題ではありません。

4

3 に答える 3

24

これは無効な構文です。最初に配列の「親」部分を構築する必要があります。次に、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,
    );
}
于 2013-01-21T19:58:14.710 に答える
1

配列の定義でforeachを使用することはできません。ただし、変数を配列自体に配置することも、配列の外側でforeachを実行して、キー$clientsに挿入される配列を構築することもできます。options

于 2013-01-21T19:58:45.290 に答える
1

foreach を使用して、データを定義するのではなく、データにアクセスします。

これを試して:

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

「オプション」のデータ構造を変更する必要がある場合は、プライマリ配列を定義する前にこれを行ってください。

于 2013-01-21T19:56:41.490 に答える