0

XMLを取得して配列を作成し、APIを介して更新できるようにするための次のコードがあります。

$data1 = file_get_contents('neworderexample.xml');
$xml = new SimpleXMLElement($data1,LIBXML_NOCDATA);

foreach($xml -> Product as $ord){
$sku = $ord -> StockNumber;
$title = $ord -> Title;
$retail_price = $ord -> RRP;
$price = $ord -> SellPrice;
$description = $ord -> Description;
$inventory_level = $ord -> StockLevel;
$weight = $ord -> Weight;
$width = $ord -> Width;
$prodheight = $ord -> Height;
$depth = $ord -> Depth;

$fields = array(
"sku" => $sku,
"name" => $title,
"retail_price" => $retail_price,
"price" => $price,
"description " => $description,
"inventory_level " => $inventory_level,
"type" => "physical",
"availability" => "available",
"weight" => $weight,
"width" => $width,
"prodheight" => $prodheight,
"depth" => $depth,
"categories" => "1"
);

print_r ($fields);  

変数をエコーすると値だけが得られますが、配列を出力すると次のようになります。

[inventory_level ] => SimpleXMLElement Object ( [0] => 9 ) 
[type] => physical 
[availability] => available 
[weight] => SimpleXMLElement Object ( [@attributes] => Array ( [unit] => g ) [0] => 0.0 ) 
[width] => SimpleXMLElement Object ( [@attributes] => Array ( [unit] => (mm) ) [0] => 0 ) 
[prodheight] => SimpleXMLElement Object ( [@attributes] => Array ( [unit] => (mm) ) [0] => 0 ) 
[depth] => SimpleXMLElement Object ( [@attributes] => Array ( [unit] => (mm) ) [0] => 0 ) 
[categories] => 1 ) 

配列内の値のみを取得するにはどうすればよいですか?

4

2 に答える 2

1

文字列にキャストします。例:次を使用します。

"sku" => (string) $sku,
         ^ ^ ^ ^ 

(これは回答というよりコメントであり、重複する質問で削除されます)

于 2012-04-25T15:35:45.233 に答える
0

SimpleXMLElementがオブジェクトを作成するという事実で問題が発生します。それらの特定の要素を整数/浮動小数点数/文字列に変換してみてください。

元。

$fields = array(
"sku" => intval($sku),
"name" => $title,
"retail_price" => $retail_price,
"price" => $price,
"description " => $description,
"inventory_level " => $inventory_level,
"type" => "physical",
"availability" => "available",
"weight" => floatval($weight[0]).$weight['unit'],
"width" => intval($width[0]).$width['unit'],
"prodheight" => intval($prodheight[0]).$prodheight['unit'],
"depth" => intval($depth[0]).$depth['unit'],
"categories" => "1"
);

それがうまくいくかもしれないことを試してください。自分でテストを実行しなかったかどうかはわかりません。

于 2012-04-25T15:50:36.350 に答える