Данные XML в многомерный массив - PullRequest
0 голосов
/ 22 мая 2018

У меня следующая проблема: После добавления данных в массив он сохраняет только последнюю вставку.

Я получаю следующий результат из моего кода с var_dump:

array(5) { ["Mount01"]=> string(12) "DebugLevel#0" ["Mount02"]=> string(12) "DebugLevel#0" ["Mount03"]=> string(12) "DebugLevel#0" ["Mount04"]=> string(12) "DebugLevel#0" ["Mount05"]=> string(12) "DebugLevel#0" } 

Таким образом, он сохраняет только последний ввод, который я делаю.Но я хочу вот так:

array(X) { ["Mount01"]=> string(XX) "DebugLevel#0" ["Mount01"]=> string(XX) "Bla#5" ["Mount02"]=> string(XX) "DebugLevel#0" ["Mount02"]=> string(XX) "Bla#5" }

Это моя структура XML:

<Config>
  <Core>
    <Store>
      <Mount01>
                <DebugLevel>0</DebugLevel>
                <Bla>5</Bla>
      <Mount02>
                <DebugLevel>0</DebugLevel>
                <Bla>5</Bla>

Это мой код:

class Storage{
  public static function get_storage_data()
  {
    if(file_exists('/var/www/content/data/data.xml')) :
        $xml = simplexml_load_file('/var/www/content/data/data.xml');
        foreach ($xml->Core->Store as $mounts) {
          foreach ($mounts as $mount) {
            foreach ($mount->Children() as $value) {
              $store[$mount->getName()]=$value->getName()."#".$value;
            }
          }
        }
        var_dump($store);
    else:
        write_log(sprintf("data.xml not found"));
    endif;
  }

Итак, как я могудостичь моего желаемого выхода?Также приветствуются улучшения кода.

1 Ответ

0 голосов
/ 22 мая 2018
public static function get_storage_data(
{
    if(file_exists('/var/www/content/data/data.xml')) :
        $xml = simplexml_load_file('/var/www/content/data/data.xml');
        foreach ($xml->Core->Store as $mounts) {
          foreach ($mounts as $mount) {
            $data=[];
            foreach ($mount->Children() as $value) {
              array_push($data,[$value->getName()."#".$value]);
            }
            $store[$mount->getName()]=$data;
          }
        }
    else:
        write_log(sprintf("data.xml not found"));
    endif;
  }

Ответ на мою проблему.

...