添字配列(いわゆるキーが0から始まる連番の配列)でも
連想配列(キーが文字列など)でも
基本的に同じように扱うことができる。
ただ、たまに添字配列なのか連想配列なのかを判定したくなる時がある。
チェックする方法としてはキーが数字の連番になってるかを調べたら良いので
//link・・・http://mio-koduki.blogspot.jp/2012/04/php-0-linktruefalsefunction-ishasharray.html
//第一引数・・・調べたい配列
//返り値・・・連想配列であればtrue、でなければfalse
function is_hash($array)
{
return array_keys($array)!==range(0,count($array)-1);
}
というふうになる。
ただし、array_keysとrangeで2個新たに調べたい配列と同数の要素を持つ配列を作るので、
配列サイズが大きいと無駄なメモリを食うことになる。
そういう時は
//link・・・http://mio-koduki.blogspot.jp/2012/04/php-0-linktruefalsefunction-ishasharray.html
//第一引数・・・調べたい配列
//返り値・・・連想配列であればtrue、でなければfalse
function is_hash($array)
{
$i=0;
foreach($array as $k=>$v)
{
if($k!==$i++)
{
return true;
}
}
return false;
}
素直にforeachで回しながら、連番になってるかチェックすれば良い。
ポイントとなる関数
- array_keys ・・・ 配列のキーすべて、あるいはその一部を返す
- range ・・・ ある範囲の整数を有する配列を作成する
0 件のコメント:
コメントを投稿