来自API的PHP数组从Array获取Info

时间:2017-06-28 06:30:43

标签: php arrays

我打电话给API,我在数组中得到了这样的信息

如果我使用:

  print_r($balances); 

这将打印出来

  array ( [1CR] => Array ( [available] => 0.00000000 [onOrders] => 0.00000000 [btcValue] => 0.00000000 ) [ABY] => Array ( [available] => 0.00000000 [onOrders] => 0.00000000 [btcValue] => 0.00000000 ) [AC] => Array ( [available] => 0.00000000 [onOrders] => 0.00000000 [btcValue] => 0.00000000 ))

现在我只想从其中一个

获取信息

所以让我说我想要[AC]然后用[AC]我希望将以下信息变成可变的

available
onOrders
btcValue

当我打印出这样的数组时:

print_r($balances[AC]);

我得到的就像我想要的那样,并将其归还:

  Array ( [available] => 0.00000000 [onOrders] => 0.00000000 [btcValue] => 0.00000000 )

但是当我试图将上面的信息变成这样的变量时:

foreach($balances[AC] as $key=>$value){ 
    extract($value); 
    echo $onOrders." <br>"; 
}

它返回空白,但如果我使用它,它可以工作并显示从卷曲请求返回的所有数组

foreach($balances as $key=>$value){ 
    extract($value); 
    echo $onOrders." <br>"; 
}

所以我做错了什么?我只是想获得这些货币中的一种并非我希望能够用于在图表中显示

我已经包含了其他人以某种方式解决了我使用的答案和代码

$available=$balances['BTC']['available']; 
$onOrders=$balances['BTC']['onOrders']; 
$btcValue=$balances['BTC']['btcValue']; 

echo  "you have " .$available." BTC Available with " .$onOrders." on Orders, with a BTC Value of  " .$btcValue;

3 个答案:

答案 0 :(得分:2)

使用数组元素有无穷无尽的选择......一些例子:

<?php
$data = [
    '1CR' => [
        'available' => 0.00000000,
        'onOrders' => 0.00000000,
        'btcValue' => 0.00000000
    ],
    'ABY' => [
        'available' => 0.00000000,
        'onOrders' => 0.00000000,
        'btcValue' => 0.00000000
    ],
    'AC' => [
        'available' => 0.00000000,
        'onOrders' => 0.00000000,
        'btcValue' => 0.00000000
    ]
];

// tradition and probably best approach
foreach ($data['AC'] as $key=>$value) {
    var_dump($value);
}

// elegant approach that keeps the values out of the calling scope:
array_walk($data['AC'], function ($value, $key) {
    var_dump($value);
});
// a full import, risks collisions
extract($data['AC']);
var_dump($available, $onOrders, $btcValue);

// elegant, fails if elements are in changing order
list($available, $onOrders, $btcValue) = array_values($data['AC']);
var_dump($available, $onOrders, $btcValue);

但是请记住,所有将变量“导入”本地范围的尝试都存在命名与已存在变量冲突的风险。如果你必须依赖可能在某一天结构上改变的外部数据,那就更是如此。通常,简单地使用对数组元素本身的引用更加安全和容易,因此$data['AC']['available']等等。如果您想缩短它,请创建一个明确的引用:$AC_available = &$data['AC']['available']; ...

答案 1 :(得分:1)

请勿使用extract回复value

foreach($balances['AC'] as $key=>$value){ 
    echo $value." <br>"; 
}

编辑:

$ac_var = $balances['AC'];
extract($ac_var);

echo $onOrders." <br>"; 

答案 2 :(得分:1)

foreach($余额为$ cur){

foreach($ cur as $ key =&gt; $ value){
        echo $ key。“ - ”。$ value;
    }

}