ホームページ  >  記事  >  バックエンド開発  >  PHP はなぜ型付けが弱く、学習しやすいと言われているのでしょうか? 他の言語とどう違うのでしょうか?

PHP はなぜ型付けが弱く、学習しやすいと言われているのでしょうか? 他の言語とどう違うのでしょうか?

怪我咯
怪我咯オリジナル
2017-06-16 13:43:171469ブラウズ

私が言いたいのは、「Php の能力は自明のことです。」この言語が最も強力で、どの言語が最高であると言う人もいるでしょう。編集者は、このコラムがどの言語を比較するものではないと宣言します。このコラムは、PHP 言語の性質と、私と同じように PHP を学習している友人との経験のみに焦点を当てています。編集者は PHP の専門家ではありません。私は単なる PHP の熱心なファンです。興味があれば、私と PHP について話し、あなたの経験を共有してください。

昨日、誰かが私に返信して、弱い型付けとは何かと尋ねましたが、それを説明していませんでした。今日は、弱い型付けとは何か、弱い型付けの利点と欠点について説明します。編集者が PHP が非常に強力であると考える理由は、PHP が開発者が使用できる独自の機能を多数提供しているためであり、その 1 つが PHP の弱い型メカニズムです。

まず例を見てみましょう。弱い型は次の操作を行うことができます:

例 1:

<?Php
$iruohong = 1; //整数型
$iruohong = array(); //数组型
$iruohong = “iruohong.com”; //字符串型
?>

プログラミングの経験がある友人は、このコードを通じて弱い型の概念を理解するでしょう。その表れの一つとして、PHPカーネルの開発者は、宣言を必要としないこの仕組みにより、開発者の開発効率を向上させたいという考えがある。

ただし、このメカニズムはいくつかの問題をもたらします。たとえば、次の比較の一部は、開発者が注意を払わないと、開発者に何らかの問題を引き起こす可能性があります。

例 2:

<?Php
$a = null; $b = false;
If($a == $b){
echo “a和b相等!”;
}else{
echo “a和b不相等!”;
}
?>
<?Php
$a = &#39;&#39;; $b = 0; //同样为真
If($a == $b){
echo “a和b相等!”;
}else{
echo “a和b不相等!”;
}
?>

テストすると、どちらのコードも a と b が等しいことがわかります。 、初心者の友達は非常に驚くでしょう、どうすれば平等になれるでしょうか?この点では、エディターも損失を被っています。その理由は、比較するときに、PHP が入力変数の型を厳密にチェックせず、変数を自由に変換しないためです。変数が 0 null '' であるか false であるかに関係なく、PHP は比較するときにデフォルトで空になり、整数値は 0 になるため、それらは等しいためです。異なる複数の値を比較する必要がある場合は、「===」を使用します。3 つの等号は、型と値の同一性を含む完全な同一性を表します。これらは初心者が犯すいくつかの間違いです。

弱いタイプについてはここまで述べたので、強いタイプと弱いタイプの違いを比較してみましょう。

(1) 強い型であっても弱い型であっても、変数には型と値という 2 つの属性があります。つまり、弱い型指定の変数にも型があります。

どのプログラミング言語であっても、そこで使用される変数には型と値の両方があります。厳密に型指定された変数型は、「変数宣言」と呼ばれるソース コード内で明確に定義する必要がありますが、弱く型指定された変数型は宣言する必要がなく、インタープリタによって解釈されます。ただし、これは、弱く型指定された変数に型の概念がないという意味ではありません。たとえば、PHP の gettype は変数の「現在の」型を返します。

(2) 誤解: [強い型指定された変数の型は変更できないが、弱い型指定された変数は必要に応じて変更できると考える人もいます。強い型指定された変数は、一度宣言されると、その型の値しか格納できません。 、およびその他の値 変数は変換後に支払われる必要があります。コンパイラによって自動的に認識される変換と、プログラマによって明示的に指定される強制変換もあります。弱い型指定の変数型は、必要に応じて常に変換されます。 】黒括弧内は誤解です。実は、事前に型付けされた変数の型も、弱く型付けされた変数の型も変更できません。次の例は、$b に値を代入すると、$a の値は変わりますが、$a の型は変わりません。次の例を自分でテストしてください。例 3:

<?php
$a = 25;
echo $a.&#39;|&#39;.gettype($a).&#39;<br>&#39;;
$b = $a.&#39;good&#39;;
echo $b.&#39;|&#39;.gettype($b).&#39;<br>&#39;;
echo $a.&#39;|&#39;.gettype($a).&#39;<br>&#39;;
?>

出力結果は次のとおりです。 :

25|integer25good|string25|integer

(3) 強い型指定言語の強制変換では変数の型は変わりません

強い型指定言語には、変数の型を変えずに、代入する変数の値の型を変更する「強制変換」があります。変数の型は変更できません。

以上がPHP はなぜ型付けが弱く、学習しやすいと言われているのでしょうか? 他の言語とどう違うのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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