-1

I'm looking for an easy way to transform the keys of an associative array. I want the key of the sub array to be te first value of himself. Is it possible to change this :

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

to this :

Array
(
[ETHBTC] => Array
    (
        [status] => TRADING
    )
[LTCBTC] => Array
    (
        [status] => TRADING
    )
)
William Ode
  • 188
  • 3
  • 11

2 Answers2

1

This doesn't quite give your exact output, but it may be what your after...

$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'];

gives...

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

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

)
TRADING2
Nigel Ren
  • 56,122
  • 11
  • 43
  • 55
  • I have more than 2 elements in the sub array (my example is bad). Your solution is good but with "null" as second parameter of array_column like @splash58 response below. – William Ode Jan 06 '18 at 12:19
0
$array = Array
( Array
    (
        "symbol" => "ETHBTC",
        "status" => "TRADING"
    ),
Array
    (
        "symbol" => "LTCBTC",
        "status" => "TRADING"
    )
);

$append = [];

foreach ($array as $key => $value) {
  $append[$value['symbol']]=$value;
}
jvk
  • 2,133
  • 3
  • 19
  • 28