'abc' == 0 return true
これは数値と文字列の比較であるため、PHP は文字列を数値に変換してから比較します。 PHP の変換規則は、文字列が数字で始まる場合はその先頭の数字を変換結果とし、そうでない場合は 0 を出力します。例: 123abc は変換後 123 になるはずで、abc は 0==0 になります。詳細については、公式マニュアルを参照してください。整数と文字列を比較すると、文字列が変換されます。整数への変換
null null と 0 の 3 つの値の比較
PHP では、== は最初に型変換を実行してから比較しますが、型が異なる場合は === が最初に型を比較します。次の例を参照してください。
$a = null; $b = ''; $c = 0; echo ($a == $b)?1:0; // 输出1 echo ($a === $b)?1:0; // 输出0 echo ($a == $c)?1:0; // 输出1 echo ($a === $c)?1:0; // 输出0 echo ($b == $c)?1:0; // 输出1 echo ($b === $c)?1:0; // 输出0
3. foreach での参照割り当てについては、公式ドキュメントを参照してください。
公式ドキュメントには次の警告があります。 警告 最後の要素の $value 参照配列のは foreach ループ後も保持されます。 unset() を使用して破棄することをお勧めします。コードのセットを見てみましょう:
rrree
上記のコードの出力は次のとおりです:
1,2,3,1,2,2 最後の出力は 3 ではなく 2 です。 no $item の破棄が原因で、理由は次のとおりです。
最初のループでは、3 の参照が $item に割り当てられ、2 番目のループでは、$item が a であるため、1 が $item に割り当てられます。参照すると、配列の要素 3 が 1 になりました、わかりますか?
4. isset と empty の関係と違い
empty は、次の 8 つの状況で true を返します:
null、空の文字列 ""、文字列 0 "0"、空の配列、ブール値 false、数値 0、浮動小数点数値 0.0、var はクラスで定義されていますが割り当てられていません www.stuhack.com
isset は変数が設定されているかどうかを検出し、NULL ではないですが、空の 8 つのケースでは null のみが false を返し、他の 7 つのケースは戻りますtrue
要約 上で述べたように、empty で説明される 7 つの非 null 状況を除き、他の場合では、if(empty(variable)) は if(!isset(variable))
strrchr 関数
5 と同等です。
W3School サイトのコメントは次のとおりです。strrchr() 関数は、別の文字列内の文字列の最後の出現箇所を検索し、その位置から文字列の末尾までのすべての文字を返します。
成功した場合は false を返します。
実際には、この関数は文字列を検索するものではなく、公式ドキュメントを参照する必要があります
コード例:
$a = [1,2,3];foreach($a as &$item){ echo $item . ',';}//unset($item); // 引用赋值后不销毁对象foreach($a as $item){ echo $item . ',';}
上記のコードの出力は次のとおりです: .txt
言い換えると、$b が文字列の場合、最初の文字のみが使用され、それ以降の他の文字は無視されます
注: PHP には strstr 関数が用意されていますが、strrstr 関数を提供しない理由は非常に簡単ですが、自分で実装してください