【问题标题】:How to get attribute from a collection, with multiple objects inside of an array in Laravel?如何从集合中获取属性,在 Laravel 的数组中包含多个对象?
【发布时间】:2021-09-04 03:00:57
【问题描述】:

我有一个集合,其中包含一个包含 2 个对象的数组。我正在尝试获取 email 属性,现在只有 2 个对象,但可能有 100 个对象,所以我不确定是否需要循环或是否需要使用 array_merge 或其他东西。 我附上了数据的截图,我没有显示属性,但只知道其中一个是email。 我死了/转储了一个名为 $tokens 的变量。

最后应该返回一个邮件列表,例如:

john.doe@email.com
jane@email.com
thomas.brown@email.com

我需要在控制器中使用此逻辑,而不是在视图 (.blade) 中,因为我正在尝试使用 fputcsv 将这些数据保存在 csv 文件中,这是这里的主要目标和想法。

【问题讨论】:

  • 如果您添加控制器代码,我们将为您提供更多帮助。
  • 不幸的是,我不确定我能做到,客户隐私。
  • 创建一个这样的:for($i=0; $i<= sizeof($tokens["email"])-1; $i++) 创建一个电子邮件数组 ($emails_array = array();) 和 array_push 像这样的所有位置:array_push($emails_array, $tokens["email"][$i]);
  • @jagcweb 出现错误:Undefined array key "email" 来自 for() 括号内的代码。

标签: laravel collections associative-array


【解决方案1】:

感谢 @jagcweb 的启发,他的代码/答案只需要一些调整。以下工作并做了我想做的事情:

$emails_array = array();
for($i=0; $i <= sizeof($tokens)-1; $i++) {
    array_push($emails_array, $tokens[$i]["email"]);
}

现在$emails_array 包含一个数组,其中包含两封电子邮件。

【讨论】:

    【解决方案2】:

    这听起来像是 pluck 的用途:

    $tokens->pluck('email')
    

    Laravel 8.x Docs - Collections - pluck

    【讨论】:

    • 当我这样做时,我得到一个里面有一个空数组的集合。它返回: Illuminate\Support\Collection {#555 ▼ #items: [] }
    猜你喜欢
    • 2014-01-22
    • 2013-08-08
    • 2019-01-12
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2021-02-07
    • 2018-06-21
    • 2019-03-07
    相关资源
    最近更新 更多