Maison développement back-end tutoriel php php流程控制语句以及条件判断中的数据类型转换

php流程控制语句以及条件判断中的数据类型转换

Jun 20, 2016 pm 01:01 PM
php

php流程控制语句以及条件判断中的数据类型转换

php的流程控制语句包括循环体语句和分支判断语句。

循环操作包括三组语句,分别是while、do-while、for循环。

分支判断体包括两组:if else语句、switch语句。

以下以几个题目来理解php流程控制语句以及条件判断中的数据类型转换。

***********************************************

题目一、if-else语句与条件判断涉及的数据类型转换

***********************************************

<?php /*习题*/
/*1。写出下列代码的运行结果*/
	if(5<4)
		echo "true";
	else
		echo "false-1"."<br />";
	if("0")
		echo "true";
	else
		echo "false-2"."<br>";
	if($i)
		echo "true";
	else
		echo "false-3"."<br>";
	if("false")
		echo "true";
	else
		echo "false-4"."<br>";
	if(false)
		echo "true";
	else
		echo "false-5"."<br>";

	if(0.0)
		echo "true";
	else
		echo "false-6"."<br>";
	if(php)
		echo "true";
	else
		echo "false-7"."<br>";
	if("")
		echo "true";
	else
		echo "false-8"."<br>";
	if(null)
		echo "true";
	else
		echo "false-9"."<br>";
	if(array(12))
		echo "true";
	else
		echo "false-10"."<br>";
	if(array())
		echo "true";
	else
		echo "false-11"."<br>";
		
/*
	输出结果:
	false-1
	false-2
	false-3
	true false-5
	false-6
	true false-8
	false-9
	true false-11
	
	分析:if语句当条件不满足(即条件表达式计算结果为false)都会返回假。php的if语句没有then,有elseif(同else if)
	当转换为boolean时候,以下值被认为是false:
	1)布尔值false;
	2)整型值0(零);
	3)浮点型值0.0(零);
	4)空白字符串和字符串“0”;
	5)没有成员变量的数组;
	6)没有单元的对象(仅适用于PHP4);
	7)特殊类型NULL(包括尚未设定的变量);
*/						



?>
Copier après la connexion

***********************************************
题目二、switch-case-default语句与break语句的关系

***********************************************

<?php /*2。写出下列代码的运行结果*/
	$a = "linux";
	switch($a){
		//echo "hello";
		case 'lamp':
			echo "one";
			break;
		case php:
			echo "five";
			break;
		case 'linux'://用不用引号均可
			echo "six"."<br />";
		case 6:
			echo "??";	
		case '8':
			echo "|||";
		case 10:
			echo "10"."<br>";
			break;//如果去掉此break将输出default分支的@@
		default:
			echo "@@";
			break;
	
	}
/*
运行结果为:
six
??|||10

分析:请注意以上switch-case-default语句中,有的地方是没有break语句的。
①default在所有case开关中,总是最后执行。
②一旦switch的条件判断进入了一个开关(包括default),如果这个开关里面没有break跳出语句,则这个开关之后的语句被当做普通程序语句来执行,直到遇到break为止(比如:如果条件满足了case 2开关,而case 2开关里面没有break语句,则case 2之后的语句被当做普通程序语句执行,case判断不再有效。)。而如果进入的这个开关里面有break语句,则执行完之后就跳出switch。
③当前一语句的case语句为空时候,控制器自动转移到下一case语句。
由此可见,使用switch的时候,如果case里面没有break,这个程序是相当危险的,这其中潜伏着的漏洞即使经验丰富的测试人员也可能很难发现。

参考w3school的解释:

工作原理:

    1、对表达式(通常是变量)进行一次计算
    2、把表达式的值与结构中 case 的值进行比较
    3、如果存在匹配,则执行与 case 关联的代码
    4、代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
    5、如果没有 case 为真,则使用 default 语句


*/
?>
Copier après la connexion

***********************************************

题目三、switch-case-default语句和数据类型自动转换的问题

***********************************************

<?php /*3。写出下列代码的运行结果*/
	$a = "abc";  
	switch ($a) {
		case 0: 
			echo "a 为 0";
			break;
		case "cdef": 
			echo "a 为 cdef";
			break;
		case "abc": 
			echo "a 为 abc";
			break;
		default:
			echo "a 什么都不是";
			break;
	}
	/*输出结果:a 为 0
	
	分析:
	这个问题应该从PHP作为动态脚本语言说起:
	动态语言的变量类型是随存储的变量而变化的,即变量类型是根据具体环境而进行变化的。
	字符串"abc",从表面来看可能指确切字符串,但是对于PHP存储的时候它是不能确定的,因为随着语义的变化,其所起的作用也会变化
	第一个case 0:,PHP脚本将常量0解释为确切的整数,与字符串比较大小时,需要将字符串转换为整数。PHP脚本解释器会自动将字符串abc,从十进制(默认)转换为数字,但是abc很明显不能代表十进制数,即转换失败,此时PHP将结果置为0,如果将字符串表示为"0xabc",那么PHP脚本能够发现0x标识,将abc作为十六进制转换,所以能够得到abc标识的十六进制整数。

	如果学过C语言,可以做一个简单比较:
	C中的case必须是数字常量,而不能是字符串,就因为C是变量类型确定的,运行时不能将确定的变量按语义随意转换。而PHP可以,因为PHP语言是动态的,变量类型是动态的。

	或者从PHP的例子中学习:
	如果一个文件将111111字符串(不是数字)存储到文件,然后从文件直接读取到变量$a,如下语法就可以将$a作为整数计算:0+$a
	上述表达式得到的结果也可以作为动态语言的一个变现来看
	
	*/
?>
Copier après la connexion

***********************************************

题目四、编程中的疏忽易错点——比较运算符和赋值运算符的差异

***********************************************

<?php /*4。写出下列代码的运行结果*/
	if($i = ""){
		echo "a";
	
	}
	else {
		echo "b";
	}
	/* 输出结果:b
	这里的条件表达式不是比较运算符==,而是赋值运算符=,显然,空字符串和字符串0都为false。
	*/

?>
Copier après la connexion

通过以上四个例子,我们在php基础语法的前提下,更好的理解php语言在使用中的规则,尤其是php流程控制语句以及条件判断中的数据类型转换。这些知识的掌握有利于养成良好的代码编写习惯,规避一些现实中的陷阱,提高开发效率。


Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

See all articles