【问题标题】:How to fetch record from an array if we have concept of array index, using array_column function?如果我们有数组索引的概念,如何使用 array_column 函数从数组中获取记录?
【发布时间】:2018-10-29 14:08:36
【问题描述】:

我有一系列加密货币汇率。 数组看起来像:

$array = Array ( [0] => Array ( [code] => BTC [name] => Bitcoin [rate] => 1 )
 [1] => Array ( [code] => BCH [name] => Bitcoin Cash [rate] => 7.06364 )
 [2] => Array ( [code] => USD [name] => US Dollar [rate] => 8185.84 ) )

我使用$array[1]['rate'];得到结果

但我想通过 [code] 获得结果。

点赞$array['USD']['rate']

点赞$array['BCH']['rate']

我如何使用货币代码获得 汇率,例如 USD

【问题讨论】:

标签: php arrays associative-array


【解决方案1】:

您可以循环数组并构建一个新的关联数组以用于项目的其余部分。

$array = Array( 0 => Array( "code" => "BTC", "name" => "Bitcoin", "rate" => 1 ),
 "1" => Array ( "code" => "BCH", "name" => "Bitcoin Cash", "rate" => 7.06364 ),
 "2" => Array ( "code" => "USD", "name" => "US Dollar", "rate" => 8185.84 ) );

 foreach($array as $val){
     $rates[$val["code"]] = $val;
 }

 echo $rates['USD']['rate']; // 8185.84

https://3v4l.org/0qs0n


另一种选择是使用 array_column 和 array_combine 来完成它而无需循环。

$array = Array( 0 => Array( "code" => "BTC", "name" => "Bitcoin", "rate" => 1 ),
 "1" => Array ( "code" => "BCH", "name" => "Bitcoin Cash", "rate" => 7.06364 ),
 "2" => Array ( "code" => "USD", "name" => "US Dollar", "rate" => 8185.84 ) );

 $keys = array_column($array, "code");
 $rates = array_combine($keys, $array);

 echo $rates['USD']['rate'];

【讨论】:

    【解决方案2】:

    你可以使用array_reduce,并在回调函数中设置key为code的值:

    $array = array_reduce($array, function($carry, $item) {
        $carry[$item["code"]] = $item;
        return $carry;
    });
    
    echo $array["USD"]["rate"]; //8185.84
    

    Demo

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2019-07-30
      相关资源
      最近更新 更多