【问题标题】:Get first element of sub array as its key [duplicate]获取子数组的第一个元素作为其键[重复]
【发布时间】:2018-06-16 01:39:18
【问题描述】:

我正在寻找一种简单的方法来转换关联数组的键。 我希望子数组的键是他自己的第一个值。 是否有可能改变这一点:

Array
(
[0] => Array
    (
        [symbol] => ETHBTC
        [status] => TRADING
    )
[1] => Array
    (
        [symbol] => LTCBTC
        [status] => TRADING
    )
)

到这个:

Array
(
[ETHBTC] => Array
    (
        [status] => TRADING
    )
[LTCBTC] => Array
    (
        [status] => TRADING
    )
)

【问题讨论】:

  • $new = array_column($array, null, symbol); 但它保存了字段符号
  • 为什么不使用索引(symbolstatus)?
  • 我想用$array['symbol']查询数组

标签: php arrays transform associative-array associative


【解决方案1】:

这并不能完全给出你的确切输出,但它可能是你之后的结果......

$data = Array
(
        Array
        (
                'symbol' => 'ETHBTC',
                'status' => 'TRADING'
                ),
        Array
        (
                'symbol' => 'LTCBTC',
                'status' => 'TRADING2'
                )
        );

$data = array_column($data, null, 'symbol');
print_r($data);
echo $data['LTCBTC']['status'];

给...

Array
(
    [ETHBTC] => Array
        (
            [symbol] => ETHBTC
            [status] => TRADING
        )

    [LTCBTC] => Array
        (
            [symbol] => LTCBTC
            [status] => TRADING2
        )

)
TRADING2

【讨论】:

  • 子数组中有两个以上的元素(我的例子很糟糕)。您的解决方案很好,但将“null”作为 array_column 的第二个参数,如下面的@splash58 响应。
【解决方案2】:
$array = Array
( Array
    (
        "symbol" => "ETHBTC",
        "status" => "TRADING"
    ),
Array
    (
        "symbol" => "LTCBTC",
        "status" => "TRADING"
    )
);

$append = [];

foreach ($array as $key => $value) {
  $append[$value['symbol']]=$value;
}

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 2019-05-21
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多