昔ブログに書いたtipsを移項
例えばあるxmlをパースすることを考える
<?php
$xml=simplexml_load_string($result);
$name=array();
foreach($xml as $item){
$name[$i]=$item->name;//ここの文
$i++;
}
var_dump($name);
ここでダンプしたデータは
array
0 =>
object(SimpleXMLElement)[5]
string '金剛' (length=4)
1 =>
object(SimpleXMLElement)[4]
string '那珂' (length=4)
2 =>
object(SimpleXMLElement)[6]
string '島風' (length=4)
のようにオブジェクトの中にstringが入っている形になっている。基本的にはそのままでもいいけど、
何かのAPIに文字列を投げる必要があるときに、キャストしないとエラーを吐いてしまう。
ここではまって解決まで時間かかった。
<?php
$xml=simplexml_load_string($result);
$name=array();
foreach($xml as $item){
$name[$i]=(string)$item->name;//ここの文
$i++;
}
var_dump($name);
オブジェクトとして持っておく必要がなければ配列に突っ込むときにstringにキャストしておくべき。
特に関数として、呼び出して、文字列を返すって設計ならば。
逆にオブジェクトとして持っておきたいならキャストしないで、投げる時にキャストをすればよいと思う。