小文字と大文字を区別しない in_array()
function in_arrayi($needle, $haystack) {
return in_array(strtolower($needle), array_map('strtolower', $haystack));
}
配列内に数字があるとき変なので気をつけてね
$array = array('testing',0,'name');var_dump($array);//this will return truevar_dump(in_array('foo', $array));
3つめのパラメータにtrueを指定すればいいとはいえ、これは変。
PHP5.4.6でも確認。
他のnoteでも、沢山のなんでそーなるのって例だらけ。
多次元配列の場合
function in_multiarray($elem, $array)
{
$top = sizeof($array) - 1;
$bottom = 0;
while($bottom <= $top)
{
if($array[$bottom] == $elem)
return true;
else
if(is_array($array[$bottom]))
if(in_multiarray($elem, ($array[$bottom])))
return true;
$bottom++;
}
return false;
}
ゆるい比較なので実質使えない。
RecursiveIteratorIterator 使ったサンプルもあったので、厳密比較できるように変更
function in_array_recursive($needle, $haystack ,$strict = FALSE ) {
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($haystack));
if ($strict===true){
foreach($it AS $element)
if($element === $needle) return true;
}else{
foreach($it AS $element)
if($element == $needle) return true;
}
return false;
}
0 件のコメント:
コメントを投稿