Maison >développement back-end >Problème PHP >Quelle est la différence entre la syntaxe php et c

Quelle est la différence entre la syntaxe php et c

青灯夜游
青灯夜游original
2021-03-30 10:24:261899parcourir

Différences de syntaxe : 1. PHP utilise la fonction de définition pour définir des constantes, mais pas le langage C ; 2. Tous les noms de variables en PHP doivent être précédés d'un "$", qui n'est pas utilisé en langage C. ; 3. PHP ne se soucie pas des constantes. Aucune des variables n'a besoin d'être définie avant utilisation (sauf les variables dans les classes).

Quelle est la différence entre la syntaxe php et c

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1&&c99, ordinateur DELL G3

Syntaxiquement, php La différence avec le langage C

Constantes

La façon de définir des constantes en PHP est un peu incroyable pour les personnes qui apprennent le C. est réellement utilisé. Il est implémenté par une fonction de définition. Les fonctions de PHP sont vraiment puissantes. Nous verrons plus tard que la définition des tableaux est également complétée par des fonctions. Il faut vraiment remercier PHP pour sa bibliothèque de fonctions extrêmement riche, qui rend PHP facile à utiliser et à utiliser. puissant.

définir le prototype de fonction : bool define(string name,value,[,bool case_insensitive])

Si le troisième paramètre est VRAI, cela signifie que le nom de la constante n'est pas sensible à la casse, sinon il est sensible à la casse et la valeur par défaut est sensible. Nous ferions mieux de suivre la coutume et de garder les noms constants sensibles à la casse.

Exemple :

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

Le résultat de l'exécution du code ci-dessus est de générer la valeur de la constante C1 (Bonjour PHP World !).

À propos, 13feb7e8c35adac5ec476638ba63f175 sont les délimiteurs du code PHP, qui distinguent le code PHP du code HTML. Les instructions de code PHP se terminent par des points-virgules, ce à quoi nous sommes habitués. Les symboles de commentaires de PHP sont les mêmes que ceux de C. Il faut le savoir, mais je n'entrerai pas dans les détails... Cet écho est équivalent au printf du C ou au cout du C++, mais à proprement parler ce n'est pas une sortie formatée si vous le souhaitez. pour le formater, c'est très simple. Il vous suffit d'écrire le code HTML. Par exemple, si vous souhaitez envelopper la sortie à la fin, vous pouvez simplement l'écrire sous la forme define(“C1”,”Hello PHP World!0c6dc11e160d3b678d68754cc175188a”);. Notez que PHP prend également en charge « n » comme caractère de nouvelle ligne, mais sa signification équivaut uniquement à appuyer sur Entrée en HTML, et il apparaît toujours sur une ligne dans le navigateur.

Variables

En plus de ne pas avoir à la définir, la chose la plus inhabituelle pour les utilisateurs du langage C est que tous les noms de variables doivent être précédés d'un $. se plaindre que les concepteurs PHP le sont aussi. Vous êtes accro à l'argent, mais après vous être plaint, vous devez toujours écrire comme ça Lors de l'écriture de programmes PHP, l'utilisation de la touche Shift a fortement augmenté ! J'ai soudainement découvert un avantage de faire cela : les constantes n'ont pas de $, donc la distinction entre constantes et variables devient évidente. Plus important encore, vous n'avez plus à vous soucier des noms de variables personnalisées en conflit avec les mots-clés PHP. $if, $pour, etc. (Bien sûr, il vaut mieux ne pas faire cela dans des situations formelles, simplement en profiter).

Comme en C, les noms de variables PHP sont sensibles à la casse et la méthode de dénomination suit les principes de dénomination des identifiants C. Vous vous en souvenez ?

Si vous connaissez un peu le C++ et la notion de références, vous pouvez sauter le paragraphe suivant, rappelez-vous simplement que PHP supporte également les références. Sinon, prenez le temps de lire le paragraphe suivant ou jetez un œil au concept des références C++.

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

Le résultat de l'exécution de ce code est de générer deux 200, qui sont les valeurs de $var1 et $var2 Lors de la sortie, un caractère de nouvelle ligne est ajouté pour plus de clarté. en PHP est une chaîne de connecteur.

Pourquoi seulement 200 est-il attribué à $var2, et $var1 devient également 200. Vous pouvez également essayer de modifier uniquement la valeur de $var1. Vous constaterez que ces deux variables semblent liées ensemble. En fait, la signification de l'esperluette dans l'instruction $var2=&$var1; est de pointer le nom de la variable $var2 vers l'espace de stockage où se trouve $var1; c'est-à-dire que $var2 n'est pas une nouvelle variable, mais. un autre nom de $var1 Ils correspondent au même espace mémoire, et peu importe qui l'utilise, ils accèdent à la même variable $var2 est appelé une référence à $var1. Quels sont les avantages de citer ? Plus à venir plus tard. Si les concepts de base du langage C (nom de la variable, adresse de la variable, valeur de la variable) sont clairs, il ne devrait y avoir aucune difficulté à le comprendre. Si les concepts de base ne sont pas clairs, il est préférable de « revoir le passé » d'abord, puis d'« apprendre ». le nouveau".

Au fait, chose intéressante, si vous écrivez l'instruction echo ci-dessus comme :

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

, alors le résultat que vous obtiendrez sera :

The value of 200 is 200

Rappelez-vous, dans Lorsque vous avez appris le langage C pour la première fois, vous avez probablement commis l'erreur de mettre le nom de la variable dans une chaîne et d'essayer d'afficher sa valeur. Le résultat était le nom de la variable. Mais maintenant, votre "idéal" a été réalisé, mais vous n'êtes pas utilisé. à ça, haha. Il s'avère que lorsque PHP utilise des guillemets doubles comme délimiteur d'une chaîne, il remplacera automatiquement le nom de la variable par la valeur correspondante. Cette approche nous permet de générer très facilement une chaîne contenant des variables. . Si vous souhaitez conserver le nom de la variable tel quel, vous pouvez utiliser des guillemets simples comme délimiteur de la chaîne (bien sûr, il existe d'autres moyens, vous pouvez étudier attentivement les chaînes PHP). Nous devons encore remercier C pour ses exigences strictes. Si C était comme PHP, nous ne serions peut-être toujours pas en mesure de comprendre les concepts de noms et de valeurs de variables.

Portée de la variable

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视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Utilisation de php eofArticle suivant:Utilisation de php eof