【问题标题】:Laravel get values from collectionLaravel 从集合中获取值
【发布时间】:2018-02-19 01:23:30
【问题描述】:

如果集合是从数组创建的:

$collection = collect();
$collection->push([
        'var1'=>'value1',
        'var2'=>'value2'
       ]);

是否有可能以类似于 eloquent 集合属性的方式获得特定键的值?

$collection->var1

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我的变种:

    $collection = collect();
    $collection->push([
        'var1'=>'value1',
        'var2'=>'value2'
    ]);
    $value = $collection->get('var1'); // value1
    

    https://laravel.com/docs/5.6/collections#method-get

    【讨论】:

    • 这至少在 laravel 8 中不起作用,因为您将数组推送到集合中。你可能想写: $collection->get(0)['var1'];
    【解决方案2】:

    不,但你绝对可以做类似的事情

    $collection->first(function($value, $key) {
      return $key == 'var1';
    });
    

    或者只是@AlexeyMezenin 的建议。

    $collection[0]['var1'];
    

    【讨论】:

      【解决方案3】:

      虽然我自己仍在学习基础知识,但我个人的感觉,所以不要因为尝试而拒绝我!我知道它有一些额外的代码,但根据经验,当显式调用 $collection[0] 时,您可能会遇到偏移异常错误(希望我说得通,因为这是个人遇到的问题)

      我的方法如下

      $collection = collect();
      $collection->push([
          'var1'=>'value1',
          'var2'=>'value2'
      ]);
      
      for ($x = 0; $x < count($collection); $x++) {
          if (isset($collection[$x])) {
              $var = $collection[$x];
          }
      }
      
      // Now call what ever variable from the collection you wish:
      
      echo $var['var1'];
      echo $var['var2'];
      

      希望对您有所帮助,就像我说的,虽然我对 php/laravel 的经验还很远,但我自己仍在从研究中学习 :)

      【讨论】:

        【解决方案4】:

        要在集合中设置键值,您可以使用put() 方法。

        $collection = collect();
        
        $collection->put("var1", "value1");
        $collection->put("var2", "value2");
        $collection->put("var3", "value3");
        

        要只推送一个没有键的值到集合,请使用push() 方法,就像您在 OP 中所做的那样。

        $collection->push("value4");
        

        要检索这些值,请使用get() 方法;

        $collection->get("var2");
        

        想查看收藏的内容吗?在集合实例上使用 dd() 方法。以下两项均有效。

        dd($collection)
        

        $collection->dd()
        

        【讨论】:

        • 为什么你发布了一个非常老的问题的答案,却对所有其他人的答案投了反对票?
        • 因为他们都没有使用 Laravel 收集方法
        • 好的,起初我以为是两个月前发布的。把我的日期搞混了
        猜你喜欢
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 2017-12-09
        • 2016-11-19
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        相关资源
        最近更新 更多