PHP - заменить ключи массива списком предопределенных ключей - PullRequest
0 голосов
/ 04 октября 2018

У меня есть многомерный массив, который я получаю после очистки сети.

Array
(
    [Dollar N. America] => Array
        (
            [Name] => Dollar N. America
            [Buy] => 3.311
            [Sell] => 3.314
        )

    [Yen Japan] => Array
        (
            [Name] => Yen Japan
            [Buy] => 0.028
            [Sell] => 0.033
        )

    [Euro Europe] => Array
        (
            [Name] => Euro Europe
            [Buy] => 3.752
            [Sell] => 3.948
        )
)

Проблема заключается в том, что мне нужно изменить имена ключей массива на более короткое имя:

[DollarUS] - [YenJP] - [EuroEU]

Чтобы это выглядело так:

Array
(
    [DollarUS] => Array
        (
            [Name] => Dollar N. America
            [Buy] => 3.311
            [Sell] => 3.314
        )

    [YenJP] => Array
        (
            [Name] => Yen Japan
            [Buy] => 0.028
            [Sell] => 0.033
        )

    [EuroEU] => Array
        (
            [Name] => Euro Europe
            [Buy] => 3.752
            [Sell] => 3.948
        )
)

Я пробовал несколько способов, но не нашел результата:

foreach ($currency as $k => $v){
    $currency[$k]['DolarUS'] = $currency[$k]['Dollar N. America'];
    unset($monedas[$k]['Dollar N. America']);
}   

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете попробовать array_combine ():

http://php.net/manual/en/function.array-combine.php

$keys = ['DollarUS','YenJP','EuroEU'];
$values = [
    'Dollar N. America' => [
        'Name' => 'Dollar N. America'
        'Buy' => 3.311
        'Sell' => 3.314
    ],
    'Yen Japan' => [
        'Name' => 'Yen Japan'
        'Buy' => 0.028
        'Sell' => 0.033
    ],
    'Euro Europe' => [
        'Name' => 'Euro Europe'
        'Buy' => 3.752
        'Sell' => 3.948
    ]
];
$fixedKeys = array_combine($keys,$values);
0 голосов
/ 04 октября 2018
$array = [
    "Dollar N. America" => [
            "Name" => "Dollar N. America"
            "Buy" => 3.311
            "Sell" => 3.314
        ],

    "Yen Japan" => [
            "Name" => "Yen Japan"
            "Buy" => 0.028
            "Sell" => 0.033
        ],

    "Euro Europe" => [
            "Name" => "Euro Europe"
            "Buy" => 3.752
            "Sell" => 3.948
        ]
];

$replace_with_me = ["Dollar N. America"=>"DollarUS" , "Yen Japan"=>"YenJP" , "Euro Europe"=>"EuroEU"];

foreach($array as $key=>$value){
  $array[$replace_with_me[$key]] = $array[$key];
 unset($array[$key])
}

var_dump($array[$key]);
...