ホームページ > バックエンド開発 > PHPの問題 > php構文とcの違いは何ですか

php構文とcの違いは何ですか

青灯夜游
リリース: 2023-03-09 08:20:01
オリジナル
1897 人が閲覧しました

構文の違い: 1. PHP では定数の定義に定義関数を使用しますが、C 言語では使用しません; 2. PHP ではすべての変数名の前に「$」を付ける必要がありますが、これは C 言語では使用されません; 3. PHP は定数を考慮しません どちらの変数も使用前に定義する必要はありません (クラス内の変数を除く)。

php構文とcの違いは何ですか

#このチュートリアルの動作環境: Windows7 システム、PHP7.1&&c99 バージョン、DELL G3 コンピューター

構文、 php C 言語との違いは、定義関数によって実装されます。PHP の関数は非常に強力です。配列の定義も関数によって完了することが後でわかります。PHP の非常に豊富な関数ライブラリには本当に感謝しなければなりません。 PHP は使いやすく強力です。 define 関数プロトタイプ: bool define(string name, value, [, bool case_insensitive])

3 番目のパラメータが TRUE の場合、定数名がサイズ 書き込みは区別されません。それ以外の場合は区別されます。デフォルトは区別されます。慣例に従い、定数名では大文字と小文字を区別しましょう。

例:

<?php
  define(“C1”,”Hello PHP World!”);
  echo C1;
?>
ログイン後にコピー

上記のコードの実行結果は、定数 C1 (Hello PHP World!) の値を出力します。

ちなみに、

?>

は PHP コードの区切り文字であり、PHP コードと HTML コードを区別します。セミコロンを使用します。これは私たちが慣れ親しんでいるものです。さらに、PHP のコメント記号は C のコメント記号と同じです。ご存知のはずですが、詳細は説明しません... このエコーは C の printf またはC の cout ですが、厳密には出力は整形されていないと言われています。整形するのはとても簡単です。HTML コードを書くだけです。たとえば、出力の後に改行したい場合は、次のように書きます。

define("C1","Hello PHP World !
");

わかりました。 PHP は改行文字として「\n」もサポートしていますが、その意味は HTML で Enter キーを押すことと同じであり、ブラウザでは依然として 1 行であることに注意してください。

変数定義する必要がないことに加えて、C 言語ユーザーにとって最も慣れないことは、すべての変数名の前に $ を付ける必要があることです。 PHP デザイナーもそうだと文句を言う あなたはお金に依存しているのに、文句を言った後もこう書かなければなりません PHP プログラムを書くとき、Shift キーの使用頻度が急増しました。私はこれを行う利点を突然発見しました: 定数には $ がないので、定数と変数の区別が明確になります。さらに重要なのは、カスタム変数名が PHP キーワードと競合することを心配する必要がなくなりました。変数を次のように定義できます。 $if、$for など (もちろん、これは正式な状況では行わない方が良いです。ただ楽しむだけです)。 C と同じように、PHP 変数名では大文字と小文字が区別され、命名方法は C 識別子の命名規則に従います。

C 言語と参照の概念をある程度知っている場合は、次の段落をスキップできます。PHP も参照をサポートしていることを覚えておいてください。それ以外の場合は、時間をかけて次の段落を読むか、C 参照の概念を見てください。

<?php
$var1=100;
$var2=&$var1;
$var2=200;
echo $var1.”<br>”;
echo $var2;
?>
ログイン後にコピー
このコードの結果は、$var1 と $var2 の値である 200 を 2 つ出力します。出力するとき、明確にするために改行文字が追加されます。ピリオド (.) PHP は文字列ジョイナーです。

$var2 には 200 だけが割り当てられ、$var1 も 200 になるのはなぜですか? $var1 の値のみを変更してみることもできます。これら 2 つの変数が結び付けられているように見えることがわかります。実際、ステートメント $var2=&$var1; のアンパサンドの意味は、変数名 $var2 が $var1 が配置されている記憶域を指すことです。つまり、$var2 は新しい変数ではありませんが、 $var1 の別名。これらは同じメモリ空間に対応し、誰が使用しても同じ変数にアクセスします。$var2 は $var1 への参照と呼ばれます。引用するメリットは何ですか?それについては後で話してください。 C言語は、基本的な概念(変数名、変数アドレス、変数の値)が明確であれば、理解するのに困難はありませんが、基本的な概念が不明瞭な場合は、まず「過去の復習」をしてから「学習」するのがよいでしょう。新しい"。

ところで、興味深いことに、上記の echo ステートメントを

echo “The value of $var1 is ”.$var1.”<br>”;
ログイン後にコピー

として記述すると、得られる出力は次のようになります:

The value of 200 is 200
ログイン後にコピー

覚えていますか? C言語を初めて学習したとき、変数名を文字列に入れてその値を出力しようとして、得られたのは変数名だったという間違いを犯したと思いますが、今はあなたの「理想」が実現していますが、慣れてないです(笑)。 PHP が文字列の区切り文字として二重引用符を使用すると、変数名が対応する値に自動的に置き換えられることがわかりました。このアプローチにより、変数を含む文字列を出力するのが非常に便利になります。二重引用符のペアだけで、次のことが可能になります。 。出力された変数名をそのまま保持したい場合は、文字列の区切り文字として一重引用符を使用できます (もちろん、他の方法もあります。PHP 文字列を注意深く調べることができます)。 C の厳しい要件には今でも感謝しなければなりませんが、もし C が PHP のようなものだったとしたら、変数名と変数値の概念をまだ理解できないかもしれません。

変数の範囲

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 サイトの他の関連記事を参照してください。

関連ラベル:
c php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート