http://ichiy.hatenablog.com/entry/2014/03/28/203340
いや、SimpleXMLElementのままのほうが扱いやすいだろ。
というのはともかく、xml2arr()が無駄にややこしいので簡略化してみます。
出力は全く同じです。
属性と要素を両方指定したら属性が無視されるところまで同じです。
ちなみにこれ、実はマニュアルのコメントに記載されています。
PHPでちょっとやりたいことってのはだいたい誰かが先にやっているから、先にそういうのを探してみるのがよいでしょう。
どうでもいいけどこのページ、<scirpt defer>の指定がおかしいせいで正常に動いていませんね。
いや、SimpleXMLElementのままのほうが扱いやすいだろ。
というのはともかく、xml2arr()が無駄にややこしいので簡略化してみます。
public static function xml2arr($xmlobj){
$arr = array();
if (is_object($xmlobj))
{
$xmlobj = get_object_vars($xmlobj);
}
else
{
$xmlobj = $xmlobj;
}
foreach ($xmlobj as $key => $val)
{
if (is_object($xmlobj[$key]))
{
$arr[$key] = self::xml2arr($val);
}
else if (is_array($val))
{
foreach($val as $k => $v)
{
if (is_object($v) || is_array($v))
{
$arr[$key][$k] = self::xml2arr($v);
}
else
{
$arr[$key][$k] = $v;
}
}
}
else
{
$arr[$key] = $val;
}
}
return $arr;
}
public static function xml2arr2($xmlobj){
return json_decode(json_encode($xmlobj), true);
}
1行で終わりました。出力は全く同じです。
属性と要素を両方指定したら属性が無視されるところまで同じです。
ちなみにこれ、実はマニュアルのコメントに記載されています。
PHPでちょっとやりたいことってのはだいたい誰かが先にやっているから、先にそういうのを探してみるのがよいでしょう。
どうでもいいけどこのページ、<scirpt defer>の指定がおかしいせいで正常に動いていませんね。
PR