ホームページ >バックエンド開発 >PHPチュートリアル >array_search() 関数、3 番目のパラメータは何をするのでしょうか?

array_search() 関数、3 番目のパラメータは何をするのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 14:23:291039ブラウズ

http://docs.php.net/manual/zh/function.array-search.php

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )


strict
オプションの 3 番目のパラメータ strict が TRUE の場合、array_search() は haystack でチェックされます まったく同じ要素。これは、干し草の山内の針のタイプもチェックされ、オブジェクトは同じインスタンスである必要があることを意味します。


質問:
この関数の 3 番目のパラメーター $strict = false は何をしますか?
例を挙げてみましょう。


ディスカッションへの返信(解決策)

マニュアルにも記載されている通り、第3引数がtrueの場合は値の型をチェックする必要があります

マニュアルにも記載されている通り、第3引数がtrueの場合は、値の型を確認する必要があります

例を挙げてください。

<?     $x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $y=array_search("q2",$x);     echo $y;     echo "\r\n";          $xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $yy=array_search("q2",$xx,$strict =false);     echo $yy;     echo "\r\n";          $xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $yyy=array_search("q2",$xxx,$strict =true);     echo $yyy;     echo "\r\n";?>



上記のコードはパラメータを追加します: $strict =true または $strict =false
違いはありませんか?

<?php$x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"2","4"=>"Q2","5"=>"q2");$y=array_search("2",$x);echo $y;echo "<hr>";$xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yy=array_search("2",$xx,$strict =false);echo $yy;echo "<hr>";$xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyy=array_search("2",$xxx,$strict =true);echo $yyy;echo "<hr>";$xxxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyyy=array_search(2,$xxx,$strict =true);echo $yyyy;echo "<hr>";


Q2を2に変更しました。次に、それぞれ false と true を使用して出力します。 。 3番目は出力されません。 。 true の場合、型と値は同じである必要があります。ただし、3 番目は「2」にチェックを入れています。 。そして、配列内の 1 は 2 です。型が異なるため、出力されない場合は false になります。 。 false の場合、型は無視されるため、2 つの出力は

$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)

$a = array("a"=>"5","b"=>5);
echo array_search(5, $a); 値の型を判断する必要はないので、文字列「5」は正常に一致します
echo array_search(5,$a,true);値の型なので、文字列 "5" は数値 5 と一致しません。 一致成功

<?php$x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"2","4"=>"Q2","5"=>"q2");$y=array_search("2",$x);echo $y;echo "<hr>";$xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yy=array_search("2",$xx,$strict =false);echo $yy;echo "<hr>";$xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyy=array_search("2",$xxx,$strict =true);echo $yyy;echo "<hr>";$xxxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyyy=array_search(2,$xxx,$strict =true);echo $yyyy;echo "<hr>";


q2 を 2 に変更しました。次に、それぞれ false と true を使用して出力します。 。 3番目は出力されません。 。 true の場合、型と値は同じである必要があります。ただし、3 番目は「2」にチェックを入れています。 。そして、配列内の 1 は 2 です。型が異なるため、出力されない場合は false になります。 。 false の場合、型は無視されるため、2 つの出力


は正常です。


$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)


3 番目のパラメータである in_array() 関数もこのように動作しますか?

マニュアルには次のように記載されています: 3 番目のパラメータ strict の値が TRUE の場合、in_array() 関数は針のタイプが干し草の山のものと同じかどうかもチェックします。

見てみませんか?不死身?


$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)


3 番目のパラメータである in_array() 関数もこのように動作しますか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。