Maison >développement back-end >tutoriel php >Points de connaissances souvent confus en PHP
Cet article présente principalement les points de connaissances qui sont souvent confus en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
1. La différence entre echo et print
Les fonctions d'echo et d'impression en PHP sont fondamentalement les mêmes (sortie), mais il existe encore des différences subtiles entre les deux. Il n'y a pas de valeur de retour après la sortie d'écho, mais print a une valeur de retour et renvoie false lorsque son exécution échoue. Par conséquent, elle peut être utilisée comme une fonction normale. Par exemple, après avoir exécuté le code suivant, la valeur de la variable $r sera 1.
$r = print "Hello World";
Cela signifie que print peut être utilisé dans certaines expressions complexes, mais echo ne le peut pas. Cependant, comme l'instruction echo ne nécessite le renvoi d'aucune valeur, l'instruction echo dans le code s'exécute légèrement plus rapidement que l'instruction print.
2. La différence entre include et require
Les fonctions de include() et require() sont fondamentalement les mêmes (include), mais il existe quelques différences dans Dans l'utilisation, include() est une fonction d'inclusion conditionnelle, tandis que require() est une fonction d'inclusion inconditionnelle. Par exemple, dans le code suivant, si la variable $a est vraie, le fichier a.php sera inclus :
if($a){ include("a.php"); }
et require() est différent de include(), quelle que soit la valeur $ a prend, ce qui suit Le code inclura le fichier a.php dans le fichier :
if($a){ require("a.php"); }
En termes de gestion des erreurs, utilisez l'instruction include. Si une erreur d'inclusion se produit, le programme ignorera l'inclusion. Bien que le message d'erreur soit affiché, le programme continuera à être mis en œuvre ! Mais require vous donnera une erreur fatale.
Bien sûr, nous pouvons aussi comprendre Qifen littéralement : require signifie une demande ou une exigence très forte.
3. Les instructions require_once() et include_once()
Je suis hors sujet, car elles ressemblent à de simples instructions require_once() et include_once() correspondant respectivement pour exiger () et inclure () les instructions. Les instructions require_once() et include_once() sont principalement utilisées lorsque plusieurs fichiers doivent être inclus, ce qui peut efficacement éviter les erreurs dans les définitions répétées de fonctions ou de variables causées par l'inclusion du même morceau de code.
4. La différence entre une chaîne vide ('') et NULL
Les chaînes vides et NULL en PHP sont toutes deux stockées avec une valeur de 0, mais leurs types sont pas la même chose. Vous pouvez essayer echo gettype(''); et echo gettype(NULL); et vous constaterez qu'ils impriment respectivement la chaîne et NULL. Bien sûr, 0 est également facile à confondre. ); Si vous imprimez le type, vous constaterez que le type de 0 est entier (entier). On peut voir que la chaîne (''), NULL et 0 sont des "valeurs égales" mais pas de types différents.
5. La différence entre isset et vide
Du sens littéral, on peut comprendre : vide c'est juger si une variable est "vide", tandis que isset l'est pour juger si une variable a été définie. Mais il y a une chose à laquelle vous devez faire attention ici : lorsque la valeur d'une variable est 0, vide considère la variable comme égale à vide, c'est-à-dire qu'elle équivaut à aucun paramètre. Par exemple, lorsque nous détectons la variable $id, lorsque $id=0, nous utilisons vide et isset pour détecter si la variable $id a été configurée. Les deux renverront des valeurs différentes : vide pense qu'elle n'est pas configurée et isset peut obtenir. la valeur de $id. , regardez l'exemple ci-dessous :
$id=0; empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的 !isset($id)?print "我是空的":print "我是$id .";//结果:我是0
6 La différence entre == (égal) et === (égal)
Regardez le quatrième caractère nul ci-dessus La différence entre la chaîne ("") et NULL, regardons un autre exemple :'' == NULL; '' === NULL;Après l'avoir exécuté, vous constaterez que le premier est vrai et le second un est faux ! On peut voir que == compare uniquement si les valeurs sont égales, tandis que === compare non seulement les valeurs, mais compare également les types, ce qui est plus strict.
7.self :: La différence entre this->
Lors de l'accès à des variables ou méthodes membres dans une classe PHP, si la variable ou la méthode référencée est Si elle est déclarée comme const (définissant des constantes) ou static (déclarant static), alors l'opérateur :: doit être utilisé. Au contraire, si la variable ou la méthode référencée n'est pas déclarée comme const ou static, alors l'opérateur -> utilisé. De plus, si vous accédez à une variable ou une méthode const ou statique depuis la classe, vous devez utiliser l'auto-référence. Au contraire, si vous accédez à une variable ou une méthode non const ou statique depuis la classe. classe, vous devez utiliser self-référentiel $this.8. La différence entre strstr() et strpos()
stristr() n'est pas sensible à la casse strstr() est sensible à la casseRecherche de fonction La première occurrence d'une chaîne dans une autre chaîne. En cas de succès, renvoie le reste de la chaîne (à partir du point de correspondance). Si la chaîne n'est pas trouvée, renvoie false. stripos() insensible à la casse strpos() sensible à la casse La fonction renvoie la position de la première occurrence d'une chaîne dans une autre chaîne. Renvoie false si la chaîne n'est pas trouvée. Des tests ont prouvé que si vous recherchez simplement pour déterminer s'il existe, l'efficacité d'exécution de strpos() est supérieure à strstr()9 HTTP_HOST et SERVER_NAME en PHP<.>
Mêmes points :Lorsque les trois conditions suivantes sont remplies, les deux afficheront les mêmes informations.
1. Le serveur est le port 80
2. Le nom du serveur dans la configuration d'Apache est correctement défini
3. > est différent Points :
1. Situation normale :_SERVER["HTTP_HOST"] Selon la spécification du protocole HTTP/1.1, les informations seront affichées en fonction de la requête HTTP du client.
_SERVER["SERVER_NAME"] par défaut affiche directement la valeur ServerName dans le fichier de configuration d'Apache httpd.conf.
2. Lorsque le serveur est sur un port non-80 :
_SERVER["HTTP_HOST"] affichera le numéro de port, par exemple : mimiz.cn:8080
_SERVER["SERVER_NAME" "] affichera directement la valeur ServerName
, donc dans ce cas, cela peut être compris comme : HTTP_HOST = SERVER_NAME : SERVER_PORT
3. Lorsque le ServerName dans la configuration le fichier httpd.conf est le même que HTTP/1.0 Lorsque le nom de domaine demandé est incohérent :
httpd.conf est configuré comme suit :
ServerName mimiz.cn
ServerAlias www.mimiz.cn
Nom de domaine d'accès client www.mimiz.cn
_SERVER["HTTP_HOST"] sortie www.mimiz.cn
_SERVER["SERVER_NAME "] sortie mimiz.cn
Donc, dans le programme actuel, vous devriez essayer d'utiliser _SERVER["HTTP_HOST"], qui est plus sûr et plus fiable.
Si vous utilisez le mappage de ports et accédez depuis l'intranet, il est préférable d'utiliser "$_SERVER['HTTP_X_FORWARDED_HOST']".
Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
PHP implémente la fonction de vote d'humeur
Plusieurs façons de vider le cache en PHP
PHP implémente un site Web d'achat multifonctionnel
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!