代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

Laravel集合:Shift Value*和*Key?

  •  4
  • Alana Storm  · 技术社区  · 7 年前

    也就是说,如果我有以下小程序

    $collection = collect(['key1'=>'value1','key2'=>'value2']);        
    
    var_dump(
        $collection->first()
    );
    
    var_dump(
        $collection->shift()
    );
    

    我可以 shift() value1 first() .我想要的是,用一行代码,切换或抓取 钥匙 key1 ). 我知道我可以这样做

    $result = (function($c){
        foreach($c as $key=>$value)
        {
            return $key;
        }
    })($collection);
    

    但我希望/想知道拉雷维尔是否有更优雅/紧凑的东西。

    3 回复  |  直到 7 年前
        1
  •  7
  •   Axalix    7 年前

    抓取元素(第一个或最后一个):

    第一个

    $collection->take(1);
    

    => Illuminate\Support\Collection {#926
         all: [
           "key1" => "value1",
         ],
       }
    

    最后一个

    $collection->take(-1);
    

    => Illuminate\Support\Collection {#924
         all: [
           "key2" => "value2",
         ],
       }
    

    $collection->take(1)->keys()->first();
    

    后果

    "key1"
    

    抓第一把钥匙II

    key($collection->take(1)->toArray());
    

    “键1”
    
        2
  •  3
  •   Devon Bessemer    7 年前

    抓取钥匙的一种方法是使用

    $collectionOfKeys = $collection->keys();
    

    要获取第一个密钥,可以执行以下操作:

    $key = $collection->keys()->first();
    

    $collection->forget($key);
    // or $collection->shift();
    
        3
  •  3
  •   Jean Marcos    7 年前

    $collection = collect(['key1'=>'value1','key2'=>'value2']); 
    
    $chunked = $collection->splice(0, 1);
    
    print_r($chunked);
    //Array([key1] => value1)
    
    print_r($collection->all());
    //Array ( [key2] => value2 )
    

    请参阅: https://laravel.com/docs/5.4/collections#method-splice