首页 > 解决方案 > 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";
}
}

如何显示关键是余额的内部数组?

标签: phparrays

解决方案


问题是你有没有尝试在这个 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);

推荐阅读