int型?

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

<?     $x1=array(1=>111,2=>22111,3=>3333);     $y1=in_array(111,$x1);     echo $y1;     echo "\r\n";          $x2=array(1=>111,2=>2211,3=>3333);     $y2=in_array('111',$x2);     echo $y2;     echo "\r\n";          $x3=array(1=>111,2=>2211,3=>3333);     $y3=in_array("111",$x3);     echo $y3;     echo "\r\n";    ?>


質問:
上記の PHP プログラムでは、関数の最初のパラメーターは次の 3 つの方法で表現できる int 型です:
1) 111
2) '111'
3) "111"

これらすべて はい、なぜですか?


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

in_array の 3 番目のパラメータを指定していないため、値が等しいかどうかのみを比較します。 111 、 '111' 、および "111" の 3 つの値は等しいです。

まず第一に、2) と 3) に違いはありません
次に、マニュアルを読む必要があります。in_array には 3 番目のパラメータがあります。デフォルトの false を使用しないでください。
3 番目のパラメータ true を追加してみてはいかがでしょうか?

in_array の 3 番目のパラメータを指定していないため、値が等しいかどうかのみを比較します。 111 、 '111' 、および "111" の値は等しいです。

今のところ、3 番目のパラメータを考慮する必要はありません。
PHPの構文、int型はこの3通りで表現できるのでしょうか?

不可能です
111 は int を表します
'111' 、「111」は文字列を表します

不可能です
111 は int を表します
'111' 、「111」は文字列を表します

なぜプログラムは正しいのでしょうか?

1階の方も言ってますが、やはりマニュアルを読むことをお勧めします。
http://php.net/manual/zh/function.in-array.php

<?          $x1=array(1=>"a",2=>"b",3=>"c");     $y1=in_array(a,$x1);         //这行有语法错误!                                                   //PHP Notice:  Use of undefined constant a - assumed 'a' in /var/www/b.php on line 4     echo $y1;     echo "\r\n";          $x2=array(1=>"a",2=>"b",3=>"c");     $y2=in_array('a',$x2);     echo $y2;     echo "\r\n";          $x3=array(1=>"a",2=>"b",3=>"c");     $y3=in_array("a",$x3);     echo $y3;     echo "\r\n";     ?>


関数 in_array()、最初のパラメータは文字型です。次の 3 つの表現:
1) //PHP 構文エラー。
2) 「a」
3) 「a」

前回の投稿ですでに質問していますので、よく見てください。

1階の方も言ってますが、やはりマニュアルを読むことをお勧めします。
http://php.net/manual/zh/function.in-array.php

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )


関数 in_array()、最初のパラメータ、その型は次のとおりです:
つまり、その型は不明です。 , PHP の種類の 1 つです。

int 整数型:
1) 111
2) '111'
3) "111"
この書き方ならコンパイルエラーは出ません!
つまり、全てint型なのでしょうか?


in_array の 3 番目のパラメータを指定していないため、値が等しいかどうかのみを比較します。 111 、 '111' 、および "111" の値は等しいです。

今のところ、3 番目のパラメータを考慮する必要はありません。
PHPの構文、int型はこの3通りで表現できるのでしょうか?
PHP は弱い型付け言語であり、コンテキストに応じてデータ型を自動的に変更します
たとえば、
echo '111' + 2; //Output 113
echo 111 . //Output 1112

#8 の場合、必須の型チェックがキャンセルされました
error_reporting(E_ALL ^ E_NOTICE);
$x1=array(1=>"a",2=>"b",3=>"c"); in_array(a,$x1) ;
エラーは報告されません。

前回の投稿ですでに質問しているので、よく読んでください。


この投稿は PHP の種類について質問しています。

関数 in_array() の 3 番目のパラメータとは何の関係もありません!


in_array の 3 番目のパラメータを指定していないため、値が等しいかどうかのみを比較します。 111 、 '111' 、および "111" の値は等しいです。

今のところ、3 番目のパラメータを考慮する必要はありません。
PHPの構文、int型はこの3通りで表現できるのでしょうか?
PHP は弱い型付け言語であり、コンテキストに応じてデータ型を自動的に変更します
たとえば、
echo '111' + 2; //Output 113
echo 111 . //Output 1112

#8 の場合、必須の型チェックがキャンセルされました
error_reporting(E_ALL ^ E_NOTICE);
$x1=array(1=>"a",2=>"b",3=>"c"); in_array(a,$x1) ;
エラーは報告されません。

PHP は弱く型付けされた言語です。
どのくらい弱いのか、どのくらいの可能性があるのだろうか?
例: int 型の場合、3 つの書き方があります。


C言語と違い、1は1、2は2と型が厳密に標準化されています!

弱いことは相対的に強い

C 言語は強く型付けされた言語です


すべてのスクリプト言語は、コンパイルプロセスを必要としないため、弱い型付け言語です。ストレージスペースを事前に割り当てる必要はありません

LZ は死ぬほどマニュアルを読みたくないような気がするので、抜粋してみます
---------------------------- ----
bool in_array (mixed $needle , array $haystack [, bool $strict = FALSE ] )
haystack で needle を検索し、strict が設定されていない場合は緩和比較を使用します。
……
strict
3 番目のパラメータ strict の値が TRUE の場合、in_array() 関数は針の種類が干し草の山のものと同じかどうかもチェックします。
----------------------------------
この建物を死ぬほど見たくないといいのですが

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