タグ

2012年10月24日のブックマーク (2件)

  • 配列か連想配列か判定する - Qiita

    <?php if (array_values($arr) === $arr) { echo '$arrは配列'; } else { echo '$arrは連想配列'; } <?php /** * 添え字が0から連続する数値(=配列とみなせる)ときにtrue */ function is_vector(array $arr) { return array_values($arr) === $arr; } $arr1 = ['a','b','c']; //配列 $arr2 = ['a'=>'a', 'b'=>'b']; //添字が文字なので配列とは言えない $arr3 = ['a', 2=>'b', 1=>'c']; //添え字の順番がおかしいので配列とは言えない var_dump(is_vector($arr1)); //true var_dump(is_vector($arr2)); //

    配列か連想配列か判定する - Qiita
  • 配列か連想配列かを判別する - Unknown::Programming

    PHPにおいて、ある配列が連想配列として使われているのかどうかを判別したい場合どうすればいいのか。 色々調べてたらこんな記事を発見しました。 <?php function is_hash(&$array) { return array_keys($array) !== range(0, count($array) - 1); } テレパス・ラボ : 連想配列 判定関数(is_hash) なるほど。 array_keysで配列のキー一覧を取得し、そのキー一覧が0からの連番になっているかどうかを比較すれば、対象の配列が配列なのか連想配列なのかを判別できるという理屈ですね。 確かにこれで判別ができそうです。 ですがひとつだけ気になる部分があって、array_keysやrangeを使って一時的な配列を確保しているのは無駄が多いのではないかと。 対象となる配列が大きければ大きいほどメモリ効率が悪くな

    配列か連想配列かを判別する - Unknown::Programming