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

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

青灯夜游
풀어 주다: 2023-03-09 08:20:01
원래의
1901명이 탐색했습니다.

구문의 차이점: 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!)의 값을 출력하는 것입니다. 그런데 <?php?>는 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!)。

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
c php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿