#このチュートリアルの動作環境: Windows7 システム、PHP7.1&&c99 バージョン、DELL G3 コンピューター構文の違い: 1. PHP では定数の定義に定義関数を使用しますが、C 言語では使用しません; 2. PHP ではすべての変数名の前に「$」を付ける必要がありますが、これは C 言語では使用されません; 3. PHP は定数を考慮しません どちらの変数も使用前に定義する必要はありません (クラス内の変数を除く)。
構文、 php C 言語との違いは、定義関数によって実装されます。PHP の関数は非常に強力です。配列の定義も関数によって完了することが後でわかります。PHP の非常に豊富な関数ライブラリには本当に感謝しなければなりません。 PHP は使いやすく強力です。 define 関数プロトタイプ: bool define(string name, value, [, bool case_insensitive])
3 番目のパラメータが TRUE の場合、定数名がサイズ 書き込みは区別されません。それ以外の場合は区別されます。デフォルトは区別されます。慣例に従い、定数名では大文字と小文字を区別しましょう。
例:<?php define(“C1”,”Hello PHP World!”); echo C1; ?>
ちなみに、
と
?>
は PHP コードの区切り文字であり、PHP コードと HTML コードを区別します。セミコロンを使用します。これは私たちが慣れ親しんでいるものです。さらに、PHP のコメント記号は C のコメント記号と同じです。ご存知のはずですが、詳細は説明しません... このエコーは C の printf またはC の cout ですが、厳密には出力は整形されていないと言われています。整形するのはとても簡単です。HTML コードを書くだけです。たとえば、出力の後に改行したい場合は、次のように書きます。define("C1","Hello PHP World !
");
変数定義する必要がないことに加えて、C 言語ユーザーにとって最も慣れないことは、すべての変数名の前に $ を付ける必要があることです。 PHP デザイナーもそうだと文句を言う あなたはお金に依存しているのに、文句を言った後もこう書かなければなりません PHP プログラムを書くとき、Shift キーの使用頻度が急増しました。私はこれを行う利点を突然発見しました: 定数には $ がないので、定数と変数の区別が明確になります。さらに重要なのは、カスタム変数名が PHP キーワードと競合することを心配する必要がなくなりました。変数を次のように定義できます。 $if、$for など (もちろん、これは正式な状況では行わない方が良いです。ただ楽しむだけです)。
C と同じように、PHP 変数名では大文字と小文字が区別され、命名方法は C 識別子の命名規則に従います。
<?php $var1=100; $var2=&$var1; $var2=200; echo $var1.”<br>”; echo $var2; ?>
echo “The value of $var1 is ”.$var1.”<br>”;
The value of 200 is 200
変数の範囲
PHP的变量作用域与C很类似,在此不准备多说。局部变量在所存在的函数内部有效,全局变量作用域是文件作用域(限于单个PHP文件),若局部变量同全局变量重名,同C的处理方式,全局的被屏蔽。稍微麻烦一点的是,要想在函数内访问全局变量,需使用global关键字声明,否则的话PHP就认为是一个与全局变量同名的局部变量。
<?php $a=1; function func() { echo "The value of a is:".$a; } func(); ?>
以上代码没有输出1,为什么呢?PHP把函数里的$a看作是一个全新的局部变量,此$a非彼$a(函数体外的全局变量),此$a未赋值,因此输出为空。如果我们要想在函数体内部访问全局变量$a的值,须在访问之前声明一句:global $a; 这样PHP就知道要访问的是全局变量$a了。
还有一种方法是利用PHP的系统数组$GLOBALS,该数组是PHP系统自动生成和维护的,它记录了所有全局变量。echo $GLOBALS[“a”];
即可输出其中$a的值。
PHP的静态变量仅在局部函数域中存在,同C是完全相同的。
PHP有一种特殊的动态变量,名字听起来很容易让人认为就是C语言的普通变量(动态的、局部的),但这个动态的含义有点特殊,它是指变量名可以动态赋予!也就是说,可以让应用程序的最终用户为变量指定名字!
<?php $a="newname"; a="content";//newname本是$a的值,但是a的含义是以$a的值为名的变量 echo $newname; //$$a等价于 $newname echo $a; ?>
运算符和表达式
PHP在运算符和表达式方面和C极其类似,有算术、逻辑、关系、位运算符及相应的表达式,也有条件运算符(:?)及其表达式,同样还是我们开始提到的那个思想,实用为上,很多限制被取消了,相对较宽松。举个例子:
<?php $a="1"; $b=1; if ($a==$b) echo "Equal!"; else echo "Not Euqal!"; ?>
按照C的思维方式来看,$a是字符,$b是整型,两者比较是字符的ASCII码值与整数比较,显然不等,而PHP运行结果却是“Equal!”,看到这里,是不是有点冲破封建大家庭的礼教与心上人私奔的感觉?呵呵,抑或是惊呼PHP无法无天?接下来还有让你目瞪口呆的,若$a="1e3"; $b=1000; 依然是“Equal!”,也就是说PHP在比较时能自动将字符串“按照人的理解方式”进行转换,1e3不就是科学计数法表示的1000吗?甚至$a=”1e3HelloWorld”;都会相等,PHP将字符串转换为数值时会自动截取全部它能理解为数值的部分!其实C也允许跨越数据类型的比较,比如字符型和整型比较,C也会自动转换类型,但它是“按照计算机的思维方式”转换的,因为字符在计算机里就是按照ASCII码存储的。
PHP的“人性化”也带来了麻烦,当我们想严格比较两个变量的时候怎么办呢?于是PHP提供了一对特殊的运算符:全等(===)和非全等(!==),只有当值相当且数据类型相同时,才叫全等,两者有一不符,则非全等。此时,即使1与1.0也是非全等的,原因你一定知道吧。如果你觉得只有这样才踏实,那么恭喜你,你已经被C洗脑了。
运算符有优先级和结合性的概念,这方面和C是类似的,你也许记不清所有的优先级关系,但是没关系,我们有括号呢。
PHP的数据类型
PHP与C的一个显著不同是:不管常量还是变量都不需要先定义后使用(类中的变量除外),PHP根据第一次赋值的情况自动决定数据类型。想想当年学习C语言的时候,我们曾感到先定义后使用很麻烦(但是“长大后”(我是指学会C后)都体会到了它的好处),常常忘记定义,而现在少了这条规矩,反而有点不适应了。
PHP的基本变量类型有整型(Integer)、浮点型(Float)、字符串(String)(这是C没有的,但C++有String类)以及布尔型(Boolean)(C没有,但是C++有)。构造类型有数组和对象。此外还有两个特殊类型:空值(NULL)(C也有)和资源(Resource)。
推荐学习:《PHP视频教程》
以上がphp構文とcの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。