【问题标题】:php continue "foreach" after returnphp在返回后继续“foreach”
【发布时间】:2018-12-04 16:34:12
【问题描述】:

我正在为特定主题开发 WordPress 插件,但有一个一般性问题,
我有一个数组,想对每个对象做一些事情并返回结果。
一切正常,但“foreach”仅适用于数组的第一个对象,我认为这是因为“return”,但由于某些原因我不能使用“ echo" 而不是 return。
这是我的代码:

    $cast_list = array(
        "composite_cast",
        "graphic_designer_cast",
        "product_manager_cast",
        "render_cast",
        "the3d_cast",
        "story_board_cast"
    );

    foreach ($cast_list as $value)
    {
        $user_field = get_field($value);    
    }

    return $user_field;
} 

我已经阅读了其他类似的主题,但将变量传递给另一个函数来为我做“返回”工作也不起作用

【问题讨论】:

  • 从您发布的代码中不清楚您到底想要实现什么,但要知道:如果您返回,执行将停止。因此,在循环中返回并不理想(除非您特别需要该模式。)您更有可能需要聚合构建数​​据,然后在循环完成后返回所有数据。
  • I'm 103.5324% return $user_field; 将返回数组的 last 迭代 - 不是第一次(除非我们没有看到对 @ 有贡献的代码987654323@) -- 你应该回显$user_field within foreach 循环

标签: php wordpress foreach


【解决方案1】:

您的疑问:“foreach”仅适用于数组的第一个对象,我认为是因为“return”

这不适用于return,这是因为每次都会在foreach() 循环内覆盖变量。实际上,您不仅返回了 first 元素,还返回了 last 元素,因为您每次都在 foreach() 循环中覆盖 $user_field 变量

尝试使用$user_field[] 将结果推送给它,然后你就可以开始了

$cast_list = array(
    "composite_cast",
    "graphic_designer_cast",
    "product_manager_cast",
    "render_cast",
    "the3d_cast",
    "story_board_cast"
);

foreach ($cast_list as $value)
{
    $user_field[] = get_field($value);    
}

return $user_field;

【讨论】:

    【解决方案2】:

    return 关键字之前,所有函数都有效。您需要创建一个新数组并将所有已编辑的元素附加到其中,然后返回它。

    $user_fields = array();
    foreach ($cast_list as $value)
    {
        array_push($user_fields, get_field($value));
    }
    return $user_fields;
    

    或者你甚至可以在循环中处理每个字段并且什么都不返回。

    【讨论】:

    • 或者只是$user_field[] = get_field($value);
    猜你喜欢
    • 2011-12-11
    • 2011-05-15
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多