php - PHP Array Loop - 试图在数组中获取数组
问题描述
我正在尝试循环以下数组:
{
"makerCommission": 10,
"takerCommission": 10,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"updateTime": 1611210805740,
"accountType": "MARGIN",
"balances": [{
"asset": "BTC",
"free": "0.00000000",
"locked": "0.00000000"
}, {
"asset": "LTC",
"free": "0.00000000",
"locked": "0.00000000"
}, {
"asset": "ETH",
"free": "0.00000000",
"locked": "0.00000000"
}, {
"asset": "NEO",
"free": "0.00000000",
"locked": "0.00000000"
}],
"permissions": ["SPOT"]
}
并使用以下代码提取“资产”和“免费”密钥:
foreach ($array as $i => $values) {
if ($i == 'balances')
{
//show the inner array here - asset and balances
echo "thearray";
}
}
如何显示关键是余额的内部数组?
解决方案
问题是你有没有尝试在这个 json 上这样做。它是一个字符串,所以你不能那么容易地做 foreach。首先,您必须将其转换为带有 的数组json_decode($string, true)
,它返回关联数组。
然后你就可以通过$array['balances'
.
$array = json_decode($json, true);
$balances = $array['balances'];
var_export($balances);
值如下:
array (
0 =>
array (
'asset' => 'BTC',
'free' => '0.00000000',
'locked' => '0.00000000',
),
1 =>
array (
'asset' => 'LTC',
'free' => '0.00000000',
'locked' => '0.00000000',
),
2 =>
array (
'asset' => 'ETH',
'free' => '0.00000000',
'locked' => '0.00000000',
),
3 =>
array (
'asset' => 'NEO',
'free' => '0.00000000',
'locked' => '0.00000000',
),
)
var_export
很方便,因为您可以立即将结果粘贴到代码中。如果您只想获取free
,或者locked
您可以使用array_column调用。如果您需要多于一列,foreach
建议使用单列。
例子:
// use array_column
$asset = array_column($balances, 'asset');
var_dump($asset);
// use foreach
$asset2 = [];
foreach ($balances as $row) {
$asset2[] = $row['asset'];
}
var_dump($asset2);
推荐阅读
- asp.net - 增强 ASP.NET Web 窗体项目以支持路由
- php - 如何检查字符串是否包含“x”但不包含“xy”
- amazon-web-services - 为什么 boto3 的 FilterExpression 不接受超过 1 个表达式?
- c++ - C++中的无符号算术
- powershell - 将列表项转换为网格视图
- html - 导航栏未正确排列
- google-chrome - 为什么 Chrome 不显示 Content-Type: text/html;charset=utf-8 从 nginx 返回
- c++ - 特定时间戳的 WinAPI 调用代码
- reactjs - componentDidMount 中的多次调度
- typo3 - maxWInText TypoScript 设置对 Youtube 视频无效