>백엔드 개발 >PHP 문제 >PHP 구문과 C의 차이점은 무엇입니까

PHP 구문과 C의 차이점은 무엇입니까

青灯夜游
青灯夜游원래의
2021-03-30 10:24:261878검색

구문의 차이점: 1. PHP는 정의 함수를 사용하여 상수를 정의하지만 C 언어는 그렇지 않습니다. 2. PHP의 모든 변수 이름 앞에는 C 언어에서 사용되지 않는 "$"가 와야 합니다. 상수나 변수를 사용하지 않습니다. 사용하기 전에 정의해야 합니다(클래스의 변수 제외).

PHP 구문과 C의 차이점은 무엇입니까

이 튜토리얼의 운영 환경 : Windows7 System, PHP7.1 && C99 버전, DELL G3 COMPUTERITY, PHP와 C LANGUGESTANTS의 차이점 PHP의 상수의 차이 이 방법은 C를 배우는 사람들에게는 다소 믿기 어려울 것 같습니다. 실제로 정의 함수를 사용하여 구현됩니다. PHP의 함수는 정말 강력합니다. 나중에 우리는 배열 정의도 함수로 완료된다는 것을 알게 될 것입니다. 풍부한 기능을 통해 PHP를 사용하기 쉽고 강력하게 만듭니다.

함수 프로토타입 정의: bool 정의(문자열 이름, 값, [, bool case_insensitive])세 번째 매개변수가 TRUE이면 상수 이름이 대소문자를 구분하지 않는다는 의미이고, 그 반대의 경우도 마찬가지입니다. . 민감함, 기본값은 민감함입니다. 우리는 관례를 따르고 상수 이름의 대소문자를 구분하는 것이 좋습니다. 예:

<?php
  define(“C1”,”Hello PHP World!”);
  echo C1;
?>

위 코드의 실행 결과는 상수 C1(Hello PHP World!)의 값을 출력하는 것입니다. 그런데 12939bbc598abfc7e4293ce8dcfae922는 PHP 코드와 HTML 코드를 구분하는 구분 기호입니다. 게다가, PHP의 주석 기호는 C의 주석 기호와 동일합니다. 여러분도 알아야 하지만 자세히 설명하지는 않겠습니다... 이 에코는 C의 printf 또는 C++의 cout은 형식이 지정된 출력이 아닙니다. 형식을 지정하는 것은 매우 쉽습니다. 예를 들어 출력 후 줄을 끊으려면 를 작성하면 됩니다. Define("C1","Hello PHP World!&lt ;br>”);알겠습니다. PHP는 개행 문자로 'n'도 지원하지만 그 의미는 HTML에서 Enter를 누르는 것과 동일하며 브라우저에서는 여전히 한 줄로 나타납니다.

Variables

bool define(string name,value,[,bool case_insensitive])

第三个参数如果是TRUE,则表示常量名是大小写不敏感的,反之就是敏感的,默认是敏感的。我们还是遵照习惯,保持常量名称大小写敏感吧。

例: 

<?php
$var1=100;
$var2=&$var1;
$var2=200;
echo $var1.”<br>”;
echo $var2;
?>

以上代码的运行结果是输出常量C1的值(Hello PHP World!)。

这里顺便介绍一下,8d8e2522a1f26fe88db102708ab49a31是PHP代码的定界符,将PHP代码同HTML代码区分出来,PHP代码的语句以分号结束,这是我们习惯的,另外PHP的注释符号也与C一样,你该知道的,我就不说了……这个echo就相当于C的printf或C++的cout,但是严格地说不是格式化的输出,要想格式化也很容易,你把HTML代码写进去就行了,比如你要输出结束后换行,那你就写成define(“C1”,”Hello PHP World!0c6dc11e160d3b678d68754cc175188a”);

C 언어 사용자에게 가장 익숙하지 않은 점은 모든 변수 이름 앞에 $가 와야 한다는 것입니다. PHP 설계자가 너무 돈에 열중한다고 불평할 수도 있습니다. 그런데 불평을 하고도 이렇게 써야 합니다. PHP 프로그램을 작성할 때 Shift 키의 사용량이 급격하게 늘어납니다! 나는 갑자기 이 방법의 이점을 발견했습니다: 상수에는 $가 없으므로 상수와 변수의 구별이 명확해집니다. 더 중요한 것은 더 이상 PHP 키워드와 충돌하는 사용자 정의 변수 이름을 걱정할 필요가 없다는 것입니다. $if, $for 등 (물론 격식을 갖춘 상황에서는 하지 않고 그냥 즐기는 것이 더 좋습니다).

C와 마찬가지로 PHP 변수 이름은 대소문자를 구분하며 명명 방법은 C 식별자의 명명 원칙을 따릅니다. 기억하시나요?

C++과 참조 개념을 알고 있다면 다음 단락을 건너뛰어도 됩니다. PHP도 참조를 지원한다는 점만 기억하세요. 그렇지 않은 경우에는 시간을 내어 다음 단락을 읽거나 C++ 참조의 개념을 살펴보세요.

echo “The value of $var1 is ”.$var1.”<br>”;

이 코드를 실행하면 $var1과 $var2의 값인 두 개의 200이 출력됩니다. 명확성을 위해 출력 중에 줄 바꿈 문자가 추가됩니다. 문자열의 커넥터.

$var2에 200만 할당되고 $var1도 200이 되는 이유는 무엇일까요? $var1의 값만 변경해봐도 이 두 변수가 서로 연결된 것처럼 보입니다. 실제로 $var2=&$var1; 문에서 앰퍼샌드의 의미는 $var2라는 변수가 $var1이 위치한 저장 공간을 가리킨다는 것입니다. $var1의 또 다른 이름은 동일한 메모리 공간에 해당하며, 누가 사용하든 $var2는 $var1에 대한 참조라고 합니다. 인용하면 어떤 이점이 있나요? 나중에 더 많은 내용이 나올 예정입니다. C 언어의 기본 개념(변수명, 변수 주소, 변수 값)이 명확하다면 이해하는데 어려움은 없을 것이다. 기본 개념이 불분명하다면 먼저 '과거 복습'을 한 뒤 '학습'하는 것이 좋다. 새로운 것".

그런데 흥미로운 점은 위의 echo 문을 다음과 같이 작성하면

The value of 200 is 200

그러면 결과는 다음과 같습니다.

<?php
$a=1;
function func()
{
   echo "The value of a is:".$a;
}
func();
?>

기억하세요. C 언어를 처음 배웠을 때 아마도 변수명 문자열에 넣어서 그 값을 출력하려고 하면 결과는 변수명이군요. 이제 '이상'은 실현됐지만 익숙하지 않네요. 하하. PHP가 문자열의 구분 기호로 큰따옴표를 사용하면 자동으로 변수 이름을 해당 값으로 대체합니다. 이 접근 방식을 사용하면 큰따옴표 쌍만으로도 변수가 포함된 문자열을 출력하는 것이 매우 편리해집니다. . 변수 이름 출력을 그대로 유지하려면 작은따옴표를 문자열 구분 기호로 사용할 수 있습니다(물론 다른 방법도 있습니다. PHP 문자열을 주의 깊게 연구할 수 있습니다). 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP eof 사용법다음 기사:PHP eof 사용법