Проблема с PHP Простой XML - PullRequest
       27

Проблема с PHP Простой XML

0 голосов
/ 09 ноября 2011

У меня возникают проблемы с сохранением некоторых данных после использования PHP-функции simplexml_load_file. Я хочу пройти через объект SimpleXML и, если данные соответствуют требованиям, я хочу поместить их в массив. Проблема в том, что я не могу получить значение полей, кажется, что он всегда пропускает весь объект, если это имеет смысл.

Вот мой код

echo $allProducts->product[1]->sku."<br/>";
echo $allProducts->product[1]->title."<br/>";
echo $allProducts->product[1]->price."<br/>";
$products["041132"]['sku'] = $allProducts->product[1]->sku; 
$products["041132"]['title'] = $allProducts->product[1]->title; 
$products["041132"]['price'] = $allProducts->product[1]->price; 
print_r($products);

И мой вывод:

041132
Audrey Dining Chair
195.00
Array ( [041132] => Array ( 
  [sku] => SimpleXMLElement Object ( [0] => 041132 ) 
  [title] => SimpleXMLElement Object ( [0] => Audrey Dining Chair ) 
  [price] => SimpleXMLElement Object ( [0] => 195.00 ) ) 
)

Все, что я хочу сохранить, - это фактическое значение. Как мне это сделать?

Для справки вот пример моего XML:

<products>
  <product>
    <sku>934896</sku>
    <title>Savannah Barstool</title>
    <price>475.00</price>
  </product>
  <product>
    <sku>041132</sku>
    <title>Audrey Dining Chair</title>
    <price>195.00</price>
  </product>
</products>

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

SimpleXML всегда возвращает другой объект SimpleXML.Вам необходимо преобразовать возвращаемое значение в строку или число.

пример:

$products["041132"]['sku'] = intval($allProducts->product[1]->sku); 
$products["041132"]['title'] = (string)$allProducts->product[1]->title; 
1 голос
/ 09 ноября 2011

Попробуйте привести элементы к строкам, например ::1001

$products["041132"]['title'] = (string)$allProducts->product[1]->title;

Согласно руководству по PHP для SimpleXML ( см. Здесь ), "... для сравнения элемента или атрибута со строкой или передачи его в функцию, для которой требуется строка, необходимо привести ее к строка с использованием (string). В противном случае PHP обрабатывает элемент как объект. "

...