【问题标题】:laravel - Can I add new items to an array that already has some existing items?laravel - 我可以将新项目添加到已经有一些现有项目的数组中吗?
【发布时间】:2021-12-09 17:42:19
【问题描述】:

var_export($response) 是一个数组,如下所示:

array (
   0 =>
    array (
    'courseId' => 14,
    'tutorName' => 'admin',
    ),
   1 =>
    array (
    'courseId' => 15,
    'tutorName' => 'merl',
    ),
 )

下面的代码给出了这样的结果:"data": 3。我想在所有元素中添加一个名为 points$response 数组的新项目。但是在这里,它会覆盖现有的数组。我怎样才能做到这一点?

$dat=array_push($response,array('points'=>"3"));
return response()->json(['data' => $dat], 200);

预期输出:

[
    {
        "courseId": 14,
        "tutorName": "admin",
        "points": 3
    },
    {
        "courseId": 15,
        "tutorName": "merl",
        "points": 3
    }
]

【问题讨论】:

  • 注意:array_push() 返回数组中新的元素个数。
  • 哦。好的。谢谢。你能告诉我如何实现我的预期输出吗?
  • 您能否编辑您的问题以向我们提供$response 值(例如:var_export($response))而不是 JSON?
  • @Syscall 查看更新后的问题正文。我添加了var_export($response)
  • 谢谢。那么,您只想将"points" => 3 添加到第一个元素,然后返回它?

标签: php arrays laravel variables laravel-8


【解决方案1】:

如前所述,array_push() 返回数组中元素的新数量。这就是你得到3的原因。

您可以在当前响应的所有元素中添加您的值,如下所示:

foreach ($response as $key => $value) {
    $response[$key]['points'] = 3;
}

然后,只需返回响应:

return response()->json($response, 200);

【讨论】:

  • 但这样做只会将项目 points 添加到第一个数组中。我希望将此项目 points 添加到此数组中的所有数据集
  • 更新答案。
  • $response = array_map(function($e) { $e['points'] = 3; return $e; }, $response);,而不是foreach。
猜你喜欢
  • 2021-12-10
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 2015-09-20
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多