2007年01月27日

php:配列の次元数を調べる関数

配列がもつデータ(配列)のうち最大の深度を調べる関数です。
配列の各要素をスキャンして、その値が配列だった場合に、再帰的に再度スキャンします。これを繰り返して最大の深度(次元数)を調べます。

値渡し/参照渡し、どちらが有利かまでは考慮してません。php バージョンによって異なる可能性もあります。必要であれば適宜改造してください。ま、この程度のもので気にすることもないですね。巨大な配列で無い限り問題にはならないと思います。

巨大な配列の場合はアルゴリズム自体も見直す必要があります。
コードを簡易化するために関数のオーバーヘッドが、1回余分に掛かかるような処理が入ってます。など。



 ソースコード

// 配列の次元数を調べる
function depth($ary, $cnt = 0){
  if(!is_array($ary)) return $cnt; else $cnt++;
  $max = $cnt; $i = 0;
  foreach($ary as $v){
    if(is_array($v)){
      $i = zb_dim_depth($v, $cnt);
      if($max < $i) $max = $i;
    }
  }
  return $max;
}

 使い方

$ret = depth($ary);

・ 2010/01/25 修正
コードに余計な文字が入っていたので打ち消し線で消しました。

$ary(配列)を与えると、$ret に最大の次元数(numeric)が返ってきます。
$ary が配列じゃないと、0 を返します。

最近、こんな感じのものばかりだ・・・。
まとめるのがラクだし、そもそもまとめる必要もないしw

posted by HiFa at 11:02 | 🌁 | Comment(0) | TrackBack(0) | ときどきPHP | このブログの読者になる | 更新情報をチェックする
>>> スパムコメントは消してますよん。 お互い無駄な労力は避けましょう。 <<<

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。