我打电话给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;
答案 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;
}
}