Структура изменения массива по значению ключа - PullRequest
0 голосов
/ 09 июля 2020

Мой код:

<code>$xml = simplexml_load_file('http://www.floatrates.com/daily/gel.xml');        
$cur = array($xml);
$array = json_decode(json_encode($cur), true);
$newArr = [];

foreach ($array as $value) {
    foreach($value['item'] as $key){
        array_push($newArr, [ $key['targetCurrency'] => $key ]);
        print '<pre>'; print_r($newArr); print '
'; }}

и вывод https://prnt.sc/terpnc

Мне нужно сделать это как в этом примере:

[USD] => Array
(
    [title] => 1 GEL = 0.32613048 USD
    [link] => http://www.floatrates.com/gel/usd/
    [description] => 1 Georgian lari = 0.32613048 U.S. Dollar
    [pubDate] => Thu, 9 Jul 2020 12:00:01 GMT
    [baseCurrency] => GEL
    [baseName] => Georgian lari
    [targetCurrency] => USD
    [targetName] => U.S. Dollar
    [exchangeRate] => 0.32613048
    [inverseRate] => 3.06625741
    [inverseDescription] => 1 U.S. Dollar = 3.06625741 Georgian lari
)
[EUR] => Array
(
    [title] => 1 GEL = 0.28808543 EUR
    [link] => http://www.floatrates.com/gel/eur/
    [description] => 1 Georgian lari = 0.28808543 Euro
    [pubDate] => Thu, 9 Jul 2020 12:00:01 GMT
    [baseCurrency] => GEL
    [baseName] => Georgian lari
    [targetCurrency] => EUR
    [targetName] => Euro
    [exchangeRate] => 0.28808543
    [inverseRate] => 3.47119257
    [inverseDescription] => 1 Euro = 3.47119257 Georgian lari
)

Как я могу сделать это как в примере? Кстати, с моим кодом я получаю одно и то же значение много раз, например, вы можете увидеть [USD] => Array 149 раз ..

1 Ответ

0 голосов
/ 09 июля 2020

Вот модификация, необходимая для того, чтобы ваш код работал так, как вы хотите

$xml = simplexml_load_file('http://www.floatrates.com/daily/gel.xml');
$cur = array($xml);
$array = json_decode(json_encode($cur), true);
$newArr = [];

$currencies = $array[0]['item']; // here are your currencies
foreach($currencies as $currency) {
  $newArr[$currency['targetCurrency']] = $currency;
}

echo json_encode($newArr, JSON_PRETTY_PRINT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...