Как добавить ключи и ценности ко множеству?

Я использую следующий код, чтобы разобрать следующий xml и добавить id каждого человека, столь же ключевого из множества и их имен как ценности множества.

Кодекс правильно работает, но множество не.

   $array = array();
   $category = $xml->xpath('descendant::person');
    foreach ($person as $p) {
    $array[$p['id']] = $p['name'];
    }
 <?xml version="1.0" encoding="utf-8"?>
 
   
   
   
   

   
   
   
   
   

   
   
 

XML не действителен, но я приблизительно не делаю его действительным. Однако, код работает, и я просто должен назначить иды и ценности ко множеству.

0
nl ja de
@MiqdadAli, код правилен, это работает, но я должен поместить их во Множество
добавлено автор Saeed Pirdost, источник
@kennypu, да моя опечатка, исправленная.
добавлено автор Saeed Pirdost, источник
@MiqdadAli, не стандартный xml вот почему, я использую xpath кодом, я имею в виду его, разбирает вышеупомянутое xml правильно, и я просто должен получить вышеупомянутые результаты, поэтому просто должен исправить множество.
добавлено автор Saeed Pirdost, источник
@Harry, жаль его ID моя опечатка
добавлено автор Saeed Pirdost, источник
Что является $p [' i']?
добавлено автор Hkachhia, источник
куда я происходил из? Shouldn' t это быть id?
добавлено автор kennypu, источник
не говорю о коде, я думаю, что есть что-то не так о туристических данных XML
добавлено автор Miqdad Ali, источник
ваш xml нисколько не oke, я думаю, что это должно быть <�имя человека = id "Джо" = "1"> </ человек> <�имя человека = id "Джека" = "2"> </ человек> <�имя человека = id "Луча" = "3"> </ человек> <�имя человека = id "Джона" = "4"> </ человек> <�имя человека = id "Алекса" = "5"> </ человек>
добавлено автор Miqdad Ali, источник

3 ответы

Много небольших проблем, продолжающихся здесь..., самая большая проблема, тем не менее, состоит в том, что вы не можете использовать узел объекта simplexml в качестве индекса во множестве. Это должно быть вручную снято как последовательность или целое число. Вы были бы также лучше обслужены, щипнув ваше выражение XPath немного, и ваша петля не должна быть на $person, который является переменной, которая не существует, но вместо этого на $category. Попробуйте это как альтернативу:

$array = array();
$category = $xml->xpath('//person');
while(list( , $p) = each($category)) {
        $array[(string)$p['id']] = (string)$p['name'];
}
print_r($array);

Также обратите внимание, что, если ваш xml не действительный XML, то это имеет значение... simplexml библиотеки, никогда не будет функционировать правильно на недействительном xmlxml в вашем примере есть некоторое неподходящее вложение).

1
добавлено
мог попробовать этот вопрос: stackoverflow.com/questions/292926/… - это предназначается для обработки HTML, но методологии должны работать на вас очень хорошо также.
добавлено автор jlmcdonald, источник
Даже при том, что вы don' t имеют контроль над XML, который вы получаете, можно всегда убирать его сначала.. с чем-то как HTMLtidy. It' ll, по крайней мере, получают его в формат, где анализатор xml будет работать на нем. Другая возможность состоит в том, чтобы пользоваться библиотекой DOM и ее loadHTML() метод... это doesn' t заботятся об уродливом XML, и можно тогда управлять XPath на нем.
добавлено автор jlmcdonald, источник
большое спасибо у вас есть какой-либо образец или обучающая программа любого из них? есть большая информация, которую я не уверен который выбрать
добавлено автор Saeed Pirdost, источник
спасибо за ответ, когда я добавил кастинг его, работало, но, когда изменено это к//человек не делает
добавлено автор Saeed Pirdost, источник
есть ли какая-либо другая библиотека, которой я могу пользоваться, чтобы разобрать этот недействительный xml?
добавлено автор Saeed Pirdost, источник

Вы уверены, что xml не должен быть похожим на это?:

<?xml version="1.0" encoding="utf-8"?>

    
    
    
    
    

1
добавлено
Я получаю его от веб-сервиса, таким образом, я не могу изменить его, однако код успешно работает и единственная вещь, в которой я нуждаюсь, должен установить id людей как индекс множества и их имен как ценности множества. кроме того, id людей не в порядке.
добавлено автор Saeed Pirdost, источник
это вносит какое-либо изменение в урегулировании индексов массива? Я обновил вопрос
добавлено автор Saeed Pirdost, источник
Не имеет значения, потому что мой код работает, я просто должен использовать иды в качестве ключей множества и т.д.
добавлено автор Saeed Pirdost, источник
Теперь ваш xml не утверждает (на вашем оригинальном посту)...
добавлено автор Sverri M. Olsen, источник
Если ваш код работает тогда, почему вы обращаетесь за помощью? XML, который не утверждает, бросит ошибки, таким образом, он действительно будет иметь значение.
добавлено автор Sverri M. Olsen, источник
Привет id не находится в заказе так может вы приносить заказ данных id тогда, id будет в правильном порядке или сортирует $person множества незадолго до foreach
добавлено автор Sanjay, источник

Я не знаю, что это - правильный метод, Но я проверил этого и то, что это хорошо работало,

$xml = simplexml_load_string($response);
 $category = $xml->xpath('descendant::person');

 $array = array();

  foreach($category as $each){
    $name_obj = $each->attributes()->name[0];

     $name_json = json_encode($name_obj);
    $name_array = json_decode($name_json, TRUE);


    $id_obj = $each->attributes()->id[0];

  $id_json = json_encode($id_obj);
  $id_array = json_decode($id_json, TRUE);

  $array[$id_array[0]] = $name_array[0];
}

 print_r($array);
1
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp