【问题标题】:Foreach loop inside array数组内的foreach循环
【发布时间】:2013-01-04 22:51:35
【问题描述】:

我正在尝试使用 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


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,这似乎对我不起作用,因为数组 foo 位于一个数组本身中,它给出了错误解析错误:语法错误,意外 T_FOREACH,期待 ')'
    • 如果有可能无法填写,您无需将“选项”设为array()。这可能会让一些解析器看到空值(即模式 json-ld)。
    • 感谢您简单明了的解释方式。
    【解决方案2】:

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

    试试这个:

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

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

    【讨论】:

    • 使用这种方法,我将如何使 $clients 成为数组数组?抱歉,如果这听起来有点密集!
    • 先定义 $clients [code]$clients = array(array('oneval', 'two'), array('another', 'another'));[/code ] 然后只需将 $clients 包含在您的主数组中
    • 但我需要使用 foreach 循环来获取值,因为客户端用于 wordpress 查询:$clients = get_users();
    • 然后确保您已使用您期望的结构填充了一个数组并将其分配给 $clients - 或尝试 Marc 的答案;相同的方法,不同的顺序
    • 不太清楚你的意思,不幸的是 Marc 的代码在我的情况下不起作用(见评论),不过感谢你的帮助。
    【解决方案3】:

    您不能在数组的定义中使用 foreach。但是,您可以将 $clients 变量放在数组本身中,或者您可以在数组外使用 foreach 来构建要插入到 options 键处的数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2012-07-19
      • 2016-01-30
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多