忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/23 08:31 |
なりせなるてず 「PHPでXMLをパースして中身全てを連想配列にする」の感想
http://ichiy.hatenablog.com/entry/2014/03/28/203340

いや、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


2014/04/04 22:38 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買ったものリスト 2014/04/06 | HOME | デッドアイランド リップタイド 2日目>>
忍者ブログ[PR]