Php入门教程之PHP 数据类型用法详解

 更新时间:2016年11月25日 15:02  点击:2005
数据类型在php并不像java中那详细那么多种类型,下面我来给各位同学介绍php 数据类型的一些基础知道,各位同学可参考。

PHP 数据类型
PHP 支持八种原始类型(type)。

四种标量类型:

1.string(字符串)
2.integer(整型)
3.float(浮点型,也作 double )
4.boolean(布尔型)
两种复合类型:

1.array(数组)
2.object(对象)
两种特殊类型:

1.resource(资源)
2.NULL(空)
查看变量类型
通过 gettype() 函数可以方便的查看某个变量的类型:

<?php
$bool = TRUE;     // 布尔型
$str  = "foo";     // 字符串
$int  = 12;        // 整型

echo gettype($bool);        // 输出 boolean
echo gettype($str);     // 输出 string
echo gettype($int);     // 输出 integer
?>

判断变量类型

如果想通过判断变量类型来可以使用 is_type 函数:

<?php
$var_int  = 12;

// 如果 $var_int 是 int 类型,这进行加法
if (is_int($var_int)) {
    $var_int = $var_int+4;
}
echo $var_int;  // 输出 16
?>

以上基本就是PHP数据类型的基本内容,大家如果想了解具体每个数据类型的用法,可以查阅PHP手册,里面有详细的说明。

数据类型转换

PHP数据类型有三种转换方式:

•在要转换的变量之前加上用括号括起来的目标类型
•使用3个具体类型的转换函数,intval()、floatval()、strval()
•使用通用类型转换函数settype(mixed var,string type)
 第一种转换方式: (int)  (bool)  (float)  (string)  (array) (object)
 
•<?php  
•$num1=3.14;   
•$num2=(int)$num1;   
•var_dump($num1); //输出float(3.14)   
•var_dump($num2); //输出int(3)   
•?> 

第二种转换方式:  intval()  floatval()  strval()

 
•<?php  
•$str="123.9abc";   
•$int=intval($str);     //转换后数值:123   
•$float=floatval($str); //转换后数值:123.9   
•$str=strval($float);   //转换后字符串:"123.9"    
•?> 

第三种转换方式:  settype();

 
•<?php  
•$num4=12.8;   
•$flg=settype($num4,"int");   
•var_dump($flg);  //输出bool(true)   
•var_dump($num4); //输出int(12)   
•?>

PHP数据类型隐性转换的陷阱

我这里说的是php5+上跑的,php4的请飘过。

先把错误报告打开,以防看不到错误信息
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>

根据php manual 中 http://www.php.net/manual/zh/language.operators.comparison.php
“Comparison Operators” 一章的说明可知,number 和string进行比较的时候,会先将string类
型首先转化为number,然后再进行比较操作。

1.类型自动转换为数组
当我们把一个非数组的变量当做数组来调用的时候,该变量在调用时数据类型临时自动转换成数组。
例如如下代码:
<?php
$str = 'string';
var_dump($str['aaa']);  // string(1) "s"
var_dump($str);  // string(6) "string"

if($str['aaa'] === $str[0]) {
    print "===";
}
?>

如下例子可以明显的看出下标类型自动转换在发生。
<?php 
$link = '<a href="http://yulans.cn">yulans</a>'; 
$key = '1-10'; 
echo "$link[$key]n";  // 同 $link[1]
echo "{$link[$key]}n";  // 同 $link[1]
//echo "$link['$key']n";  // 报错
echo "{$link['$key']}n";  // 同 $link[0]
?> 

这里字符串在 var_dump($str['aaa']) 被临时转换成了数组 array('s','t','r','i', 'n','g'),而用关联数组方式
$str['aaa']读取索引数组的值,关联数组的下标'aaa'将被转换成整形下标,
因而在这里的$str['aaa']全等于$str[0]。

其他数据类型隐性转换成数组也隐藏有陷阱,一般都不是报出undefined index错误。举例如下代码:
<?php
/**
 * 测试变量隐性转换成数组
 *
 * @param mixed $param
 */
function test2Arr($param) {
    var_dump($param['abc']);
}

test2Arr(false); // NULL
test2Arr(123); // NULL
test2Arr(123.456); // NULL
test2Arr('string'); // string(1) "s"
test2Arr(array('abc'=>'text'));  // string(4) text
test2Arr(new ArrayObject()); // Notice: undefined index: abc

?>

解决办法:
函数参数数据类型是数组的时候,防止用户输入字符串导致错误
如下例子,当添加用户的时候,我们要求用户必须输入用户名。没有哪个SB把要求是数组的参数传入
字符串,但是防人之心不可无,说不定我连续工作超过十几个小时后一不小心就成那个SB了,又或许
某人想绕过代码执行操作。
<?php
/**
 * 添加用户(错误的写法)
 *
 * @param array $user
 */
function addUser($user) {
    if(empty($user['name'])) {  // 这里当输入类型是不为空的字符串的时候会出错,
        echo "用户名必填n";
        return false;
    }

    // do sth.

    echo "测试n";

    return true;
}

/**
 * 添加用户(正确的写法)
 *
 * @param array $user
 */
function addUser2($user) {
    if(!is_array($user) || empty($user['name'])) {
        echo "用户名必填n";
        return false;
    }

    // do sth.

    echo "测试n";

    return true;
}

$user = 'xiaoxiao';
addUser($user);
addUser2($user);


?>


2.纯数字字符串比较时自动转换成整形超过范围时发生溢出
<?php
$x1 = '111111111111111111';
$x2 = '111111111111111112';

echo ($x1 === $x2) ? "true" : "false";  // false 如我们所愿,这两个字符串确实不一样。
echo ($x1 == $x2) ? "true" : "false";    // true 这里被偷偷的转换类型了,
                                                           // 成了 echo (intval($x1) == intval($x2)) ? "true" : "false"; 整形溢出

?>


3、整形和字符串比较时数据类型隐性转换有可能发生问题
<?php
$number = 0;
$string = 'text';

if($number == $string) {
    print "true";
} else {
    print "false";
}

?>

很遗憾这里输出的是 true
我们知道 $number === $string 肯定是false,手册上说 === 是比较值&&数据类型,而用 == 只是比较值,
$number == $string 这里不是比较值吗? '0' 和 'text' 明显不一样啊。小心了,这里的$string是
先被秘密转成和$number一样的整形再比较的,$number == (int)$string的确是true


4. in_array 小陷阱
<?php

var_dump(in_array(0, array('s')));  // true

?>
因为in_array会将0 和's' 进行比较,0是number类型,'s'是string类型, 's'转化为number的结果为0,
而0 == 0 的结果是true,所以in_array(0, array('s', 'ss'))的结果也是true

如果把in_array 的第三个参数strict设置为 true,比较的时候 就会判断值和类型是否都相当。
如果都相当的话,才会返回true,否则返回false.

注释符号和格式我想很多php入门者都只会简单的//或/*之类的,下面我来给各位同学详细介绍在php中注释符号和格式有需要了解的朋友可参考。

PHP 注释符号

■C++ 风格:// 这是 C+ 风格的注释
■C 风格:/* 这是 C 风格的注释 */
■Unix Shell 风格:# 这是 Unix Shell 风格的注释
一般使用是‘//’和‘/* 注释内容 */’,还有在一些系统配置文档中,如我们搭建php环境的时候用到的php.ini里面的注释符号就是 ‘#’ 注释符号。

PHP 注释格式
PHP 注释格式分为单行注释与多行注释。

PHP 单行注释
以上三种符号都可用于单行注释,只是使用 // 或 # 注释符时,注释符号后面的文本(本行内)都被视作注释内容,而 /* */ 风格注释符必须以 */ 结尾。

例子:

 代码如下 复制代码

<?php
// 这是单行注释
echo '你好!'; // 这是单行注释
/* 注释内容 */
?>


上面的行尾注释,通常只是对本行前面的内容进行注释,单写一行的注释可能是对下面的一行或多行代码进行注释,也可能是为了程序的整体美观。

PHP 多行注释
多行注释一般使用 C 风格注释符,以 /* 开头,*/ 结尾来包含多行注释内容:

 代码如下 复制代码

<?php
echo "你好!";
/* 多行注释内容 */
?>


注意

不要嵌套使用 C 风格注释符,因为在碰到第一个 */ 时系统即认为该段注释结束,在注释掉一大块代码时很容易出现该错误。如下述用法将产生 PHP 语法错误:

 代码如下 复制代码

<?php
echo '你好!';
/*
这是多行大块注释
echo '输出另一些内容';  /* 添加的本行注释 */
*/
?>


也可以多次使用 // 符号来注释多行代码:

 代码如下 复制代码
<?php
// 注释说明
// 说明一
// 说明二
echo '注释例子';
}
?>

PHP 注释中不能包含 PHP 代码结束符即:?>,因为PHP在 检测到该结束符,即认为该段 PHP 代码结束而跳出 PHP 的执行这样会导致程序出错。还有一点就是好的php编辑器可以为我们省去很多麻烦。比如:phpdesigner,zend等等。

在php中运算符是我们程序开发中最基本的一个知识点了,下面我来给各位同学介绍在php中PHP 运算符一的些常用用法介绍。


PHP 运算符

PHP 运算符主要包括:

1.算术运算符
2.赋值运算符
3.比较运算符
4.三元运算符
5.逻辑运算符
6.字符串运算符
7.错误控制运算符

算术运算符

运算符 说明 例子 运算结果
+ 加 $x = 2;
$y = $x+1; $y = 3
- 减 $x = 2;
$y = $x-1; $y = 1
* 乘 $x = 2;
$y = $x*3; $y = 6
/ 除,返回结果为浮点类型 $x = 6;
$y = $x/3; $y = 2
% 求余,返回结果为浮点类型 $x = 6;
$y = $x%4; $y = 2
++ 递加,分为前加和后加
对布尔值和 NULL 无效 $x = 2;
++$x;(前加)
$x++;(后加) $x = 3
– 递减,分为前递减和后递减
对布尔值和 NULL 无效 $x = 2;
–$x;(前减)
$x–;(后减) $x = 1

对于前加和后加,执行后的结果都是变量加1,其区别在于执行时返回结果不一样,参考下面两个例子:


1 <?php 

2 $x = 2; 

3 echo $x++;  //输出2 

4 echo $x;    //输出3 

5   

6 $x = 2; 

7 echo ++$x;  //输出3 

8 echo $x;    //输出3 

9 ?>
递减同理。

赋值运算符
赋值运算符“=”用于赋值运算,赋值运算符的作用在于把右边的值赋值给左边变量:


1 $x = 2;
该例子将整型值 2 赋值给变量 $x。

赋值运算符其他用法
赋值运算符可以嵌套使用:


1 <?php 

2 $y = ($x = 2) + 5;    //结果为 $x=2,$y=7 

3 ?>
赋值运算符的一些变形使用方法:


1 $y += $x;
实际上它等同于:

 

1 $y = $y + $x;
同理有:


1 $y -= $x; 

2 $y *= $x; 

3 $y /= $x; 

4 $y %= $x; 

5 $y .= $x;   // . 为连接运算符,见字符串运算符
比较运算符

运算符 说明 例子 运算结果
== 等于 2 == 3 FALSE
!= 不等于,也可写作<> 2 == 3 TRUE
> 大于 2 > 3 FALSE
< 小于 2 < 3 TRUE
>= 大于等于 2 >= 3 FALSE
<= 小于等于 2 <= 3 TRUE

比较运算符也可用于字符串比较。

三元运算符
三元可以视作是特殊的比较运算符:


 (A) ? (B) : (C)
语法解释:在 A求值为 TRUE 时整个表达式的值为 B,否则为 C。

例子:

 

1 $y = ($x == 2) ? $x : 1;

该例子判断变量$x的值是否等于2,如果$x等于2,那么$y的值就等于$x(也就是等于2),反之$y就等于1。

逻辑运算符

运算符 说明 例子 运算结果

&& 逻辑与,也可写作 and $x = 2;
$y = 6;
$x && $y > 5 FALSE

|| 逻辑或,也可写作 or $x = 2;
$y = 6;
$x && $y > 5 TRUE

! 逻辑非,取逻辑的反面 $x = 2;
$y = 6;
!($x > $y) TRUE

连接运算符
字符串运算符主要指连接运算符“.”,它将连接其左右参数字符串。

例子:


$x = "beijing"; 

$y = $x."你好";       //$y = "beijing你好"


如该例子所示,字符和变量共同输出时需要使用连接运算符。

连接符与赋值运算符一起可构成连接赋值运算符:


$x = "beijing"; 

$x .="你好";      //$x = "beijing你好”

错误控制运算符
错误控制运算符:@,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

<?php
/* 读取文件 */
$my_file = @file ('file1') or
    die ("打开文件失败,错误信息: '$php_errormsg'");
?>

错误控制运算符经常用于在可能产生错误的地方屏蔽 PHP 的系统错误而提示友好的错误信息


运算符优先级的一个例外


今天在老王的技术手册看到一个问题:

<?phpif ($a = 100 && $b = 200) {     var_dump($a, $b);}

输出是什么?

这个问题, 咋一看或许觉得简单, 但其实仔细推敲并不简单,

如果说布尔与之前的部分, 是由于优先级的问题, 但是如果仅仅是优先级的问题的话, 那么结果应该是:

$a = (100 && $b) = 200而实际上的结果, 确实高优先级的&&让步给次优先级的=, 让 $b = 200 先结合了.

究其原因, 是因为PHP并不完全遵守优先级的定义, 这个在PHP的手册中也有说明:

Note: Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!$a = foo()), in which case the return value of foo() is put into $a.

这样的设计, 个人不发表看法, 反正在C语言中, 这样类似的语句是判定为语法错的. PHP采用这样的设计, 很可能是历史原因,

有好奇的同学, 会想知道到底为什么, 之前jayeeliu网友也问过:

laruence你好:
问一个php运算符优先级的问题
$t == 1 && $tt = 2
按照php运算符优先级应该是
(($t == 1) && $tt) = 2
这个顺序执行,但实际上应该是
($t == 1) && ($tt = 2)
我有些不太理解。

其实也简单, 运算符优先级是在存在二义性文法的时候的一种规约规则选择的手段, 而PHP的语法分析文件定义中, 却让等号和T_BOOLEAN_AND(&&)之前不存在了规约冲突:

expr_without_variable:  // 有隐规则存在, 相当于T_BOOLEAN_AND成为了"一元操作符".  |   expr T_BOOLEAN_AND  { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); }

exp最后, 顺便说一下, PHP对应于T_BOOLEAN_AND 还定义了 T_LOGICAL_AND(and) 和 T_LOGICAL_OR(or) , 这俩个的优先级都低于等号, 于是就会有了, 很多PHP入门教材示例代码中经典的:

$result = mysql_query(*)  or die(mysql_error());

类似的还可以用or来实现三元操作符(?:)的功能:

$person = $who or $person = "laruence";

//等同于:    

$person = empty($who)? "laruence" : $who;

 

php 恒等运算符(===)与比较运算符(==)的区别


恒等计算符,和比较运算符号“==”的区别是 “==”不会检查条件式的表达式的类型,恒等计算符会同时检查表达式的值与类型。
这主要和php是无类型语言有关,比如 NULL,FALSE,array(),”",0,”0″这几个值如果用==他们是相等的,但是你如果判断出某个值真正的返回值呢,就可以用 ===
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立

===运算符还是很有用的,php有些内置函数成功会返回某个值,失败会返回false,假如成功了但返回的是”"或者0之类的空值你怎么判断成功或者失败呢?这是就可以用 === ,它可以区分变量类型。

参考:

比较运算符 例子 名称 结果
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch语句。

<?php

var_dump(0 == "a"); // 0 == 0 -> true

var_dump("1" == "01"); // 1 == 1 -> true

var_dump("1" == "1e0"); // 1 == 1 -> true

switch ("a") {

case 0:

    echo "0";

    break;

case "a": // never reached because "a" is already matched with 0

    echo "a";

    break;

}

?>


说了一堆了我们再看看另一篇文章


运算符号(php)操作符号

按运算符号的功能分为

■算数运算符 + – * / % ++ –
■字符串运算符(连接运算符) .
■赋值运算符  =   +=  -=  *=   %=   .=
■比较(关系、条件)运算符>  <   >=   <==  ==  ===  !=  <>  !==
■逻辑运算符 && and    ||or   !  not
■位运算符 &  |   ~ ^ <<   >>  >>>
■其他的预算符?  : ” ->  ->  ::  & $
■()改变优先级别
%有两个目的使用:整除运算;控制范围,不要用小数,也不要用负数
%会把两边的数转为整数后在整除
<?php
$year=2010;
if($yeay%4==0 && $year%100!=0  ||$year%400==0){
echo"今年是闰年";
}
控制范围
$num=4600009;
echo $num%10;//9任何数和10 取余不会超过9
$a++(先用变量再自增1)  ++$a(先自增1在用变量)  $a--   --$a
<?php
$a=10;
$b=$a++;//$b=10  $a=11
$c=--$b;//$c=9 $b=9
//    9           +     11
$d=$c++  +  ++$c;//$d=20 $c=11
$e=$d--  -  --$d;//2
$name="ljw";
$age=25;
$heigh=1.75;
echo "我的名字是:{$name}我的年龄:{$age}我的身高{$hegit}";
echo'我的名字是:'.$name.'我的年龄:'.$age.'我的身高'.$hegit.;
echo "/$age=".$age;比较运算符———条件运算法符————-关系运算符
比较后的结果只有一种  boolean  true   false
===全等运算符
!==
—————===比较时不仅要求内容相同,也要求类型相同
&按位与(两个都为1才为1)    |按位或(有一个为1就为1)   ^异或(不同为1相同为0)  ~取反(0与1互换) 左移  << , 右移>>   无符号>>右移
—————————————————————————————–
$a=20;//16+4                00000000   00000000  00000000  00010100
—————————————————————————————–
$b=30;//16+8+4+2    00000000   00000000  00000000  00011110
—————————————————————————————–
$c= $a & $b;
echo $c;
&和|既可以做为逻辑运算符,又可以作为位运算符
&&  ||
短路问题:&& 和||会发生短路
&& 在做运算时,如果前边的数为false,则后面是否为true,整个表达式都是false
|| 在做运算是,如果前面的数是true,则后边是否为false,整个表达式都为true;
&或|运算时,两边都会被执行。
其他运算符
条件?成立执行这里 :不成立则执行这里
反引号执行操作系统命令 “

$str=`ipconfig/all`;
echo '<pre>';
echo $str;
echo '</pre>'@getType();错误控制符,放在表达式前边,表达式有错误的时候屏蔽掉,不推荐使用。

If和else在php中是条件判断语句,他可以多层实现数据的判断了,下面我来给大家介绍If和else使用方法与一些简单的实例了。

条件语句
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。

if…else 语句

在条件成立时执行一块代码,条件不成立时执行另一块代码
elseif 语句

与 if…else 配合使用,在若干条件之一成立时执行一个代码块
If…Else 语句


语法

if (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;

如果您希望在某个条件成立时执行一些代码,在条件不成立时执行另一些代码,请使用 if….else 语句。


1.  if 条件语法(只在条件为true的情况下执行语句,为false不执行操作):


 使用语法:
1.if(expr)     //判断条件

2.statement     //符合条件后应该执行的语句


注意:符合if条件后,如果要执行的语句不止一行,则需要用大括号 {} 将多行语句围起来


示例:

 代码如下 复制代码

if ($$a > $$b) {
echo "a is bigger than b";
$$b = $$a;
}
?>

实例

如果当前日期是周五,下面的代码将输出 “Have a nice weekend!”,否则会输出 “Have a nice day!”:

 代码如下 复制代码

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri")
  echo "Have a nice weekend!";
else
  echo "Have a nice day!";
?>

</body>
</html>

如果需要在条件成立或不成立时执行多行代码,应该把这些代码行包括在花括号中:

 代码如下 复制代码

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri")
  {
  echo "Hello!<br />";
  echo "Have a nice weekend!";
  echo "See you on Monday!";
  }
?>

</body>
</html>

ElseIf 语句
如果希望在多个条件之一成立时执行代码,请使用 elseif 语句:

语法

 代码如下 复制代码

if (condition)
  code to be executed if condition is true;
elseif (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;


实例
如果当前日期是周五,下面的例子会输出 “Have a nice weekend!”,如果是周日,则输出 “Have a nice Sunday!”,否则输出 “Have a nice day!”:

 代码如下 复制代码
1.//请将以下代码复制进html文件中进行测试  
2.<html>  
3.<body>  
4.<?php  
5.$d=date("D");  
6.if ($d=="Fri")  
7.  echo "哦耶!明天一起浪打浪!";   
8.elseif ($d=="Sun")  
9.  echo "尼玛!明天又开始悲剧了!";   
10.else 
11.  echo "既不悲剧也不喜剧的生活真无聊!";   
12.?>  
13.</body>  
14.</html> 
</html>

 代码如下 复制代码

//else if语句的应用

    $moth = date("n");                                //设置月份变量$moth
    $today = date("j");                                //设置日期变量$today
    if ($today >= 1 and $today <= 10){                //判断日期变量是否在1-10之间
        echo "今天是".$moth."月".$today."日上旬";    //如果是,说明是上旬
    }elseif($today > 10 and $today <= 20){            //否则判断日期变量是否在11-20之间
        echo "今天是".$moth."月".$today."日中旬";    //如果是,说明是中旬
    }else{                                            //如果上面两个判断都不符合要求,则输出默认值
        echo "今天是".$moth."月".$today."日下旬";    //说明是本月的下旬
    }


 

一个总结上面实例

 代码如下 复制代码


<?php  
/* php if else 判断实例 */ 
$flag = $_POST['flag'];   
// 这里是单个if的应用,如果表单提交了$flag=1,5-19行是一个代码块,当这个if成立这段代码块被执行   
if ($flag) {   
    echo '你提交了表单<br>';   
    $love = $_POST['love'];   
    // 这里是if..else,同上,但如果$love不成立else下11行被执行,   
    // 显然一个代码片段如果只有一行可以不使用{},我们还是建议都使用{}来表示一个代码片段   
    if ($love) {   
        echo '你喜欢PHP<br>';   
    } else {   
        echo '你不喜欢PHP?<br>';   
    }   
       
    $from = $_POST['from'];   
    // 这里是if elseif else
    if ($from==1) {   
        echo '你从网上知道PHP。<br>';   
    } elseif ($from==2) {   
        echo '你从朋友知道PHP。<br>';   
    } else {   
        echo '你从其它地方知道PHP。<br>';   
    }   
}   
?><br>   
  
<form method="post">   
<input type="hidden" name="flag" value="1" />   
<input name="love" type="checkbox" value="1">我喜欢PHP<br>   
你怎么知道PHP的   
<select name="from">   
<option value="1">网上</option>   
<option value="2">朋友</option>   
<option value="0">其它</option>   
  
</select>   
<input type="submit" value="提交" />   
</form>  
<?php
$flag = $_POST['flag'];
// 这里是单个if的应用,如果表单提交了$flag=1,5-19行是一个代码块,当这个if成立这段代码块被执行
if ($flag) {
    echo '你提交了表单<br>'
    $love = $_POST['love'];
    // 这里是if..else,同上,但如果$love不成立else下11行被执行,
    // 显然一个代码片段如果只有一行可以不使用{},我们还是建议都使用{}来表示一个代码片段
    if ($love) {
        echo '你喜欢PHP<br>';
    } else {
        echo '你不喜欢PHP?<br>';
    }
    
    $from = $_POST['from'];
    // 这里是if elseif else
    if ($from==1) {
        echo '你从网上知道PHP。<br>';
    } elseif ($from==2) {
        echo '你从朋友知道PHP。<br>';
    } else {
        echo '你从其它地方知道PHP。<br>';
    }
}
?>
<form method="post">
<input type="hidden" name="flag" value="1" />
<input name="love" type="checkbox" value="1">我喜欢PHP<br>
你怎么知道PHP的
<select name="from">
<option value="1">网上</option>
<option value="2">朋友</option>
<option value="0">其它</option>

 

</select>
<input type="submit" value="提交" />
</form>

 

if else条件是程序中最基本最常用的结构

if 判断后面的条件如果为true则执行if下面{}中的代码

else 如果if条件不成立为false则执行else下面{}中的代码

else if如果要使用多个条件判断时使用elseif

什么时候变量等同为true

int类型 值不为0
float类型 值不为0
string 值不为 ''或'0'
array 数组不为空
变量不为null

Switch语句在php中我们叫他为开关语句,下面我来介绍Switch语句一些基本知识与应用中Switch语句的作用,有需要了解的朋友可参考。

Switch 语句

工作原理:

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


如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。

使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

语法

 代码如下 复制代码

switch (expression)
{
case label1:
  code to be executed if expression = label1;
  break;
case label2:
  code to be executed if expression = label2;
  break;
default:
  code to be executed
  if expression is different
  from both label1 and label2;
}

实例

工作原理:

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

 代码如下 复制代码


<?php
switch ($x)
{
case 1:
  echo "Number 1";
  break;
case 2:
  echo "Number 2";
  break;
case 3:
  echo "Number 3";
  break;
default:
  echo "No number between 1 and 3";
}
?>

</body>
</html>


另外一个实例,利用switch实现一个页面多用途,首先建立test.php页面:

 代码如下 复制代码

<?php
echo "<a href='solution.php?action=add'>增加</a><br><br>";
echo "<a href='solution.php?action=del'>删除</a><br><br>";
echo "<a href='solution.php?action=search'>查找</a><br><br>";
echo "<a href='solution.php?action=update'>更新</a>";
?>

    当然这里sunec省略了其他大部分的代码,只是把其中一些提交按钮写了出来。我们可以看到,无论点击哪个按钮,我们都会跳转到solution.php页面,唯一不不同的是,问号后的action的内容分成了4种。我们可以把它称作是一种提示。

    接着,让我们看看solution.php是如何处理这四种操作的。

 代码如下 复制代码

<?php
$action=$_GET["action"];

switch ($action)
{
 case "add":
 echo "现在可以实现增加功能!";
 break;
 case "del":
 echo "现在可以实现删除功能!";
 break;
 case "search":
 echo "现在可以实现查询功能!";
 break;
 case "update":
 echo "现在可以实现更新功能!";
 break;
}
?>

再看个简单的实例

 代码如下 复制代码

<html>
<head>
<title>A switch Statement</title>
</head>
<body>
<?php
$mood = 'sad';
switch ( $mood ) {
    case 'happy':
        print 'I'm in a good mood';
        break;
    case 'sad':
        print 'Don't be down!';
        break;
    default:
        print 'Neither happy nor sad but $mood';
}
?>
</body>
</html>

[!--infotagslink--]

相关文章

  • php中浮点型(float)和整型(integer)数据类型详解

    文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • c# 数据类型占用的字节数介绍

    本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • Javascript中的数据类型之旅

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object 由无序的键值对组成。其余几种都属于简单数据类型。注意:变量...2015-10-21
  • JavaScript实现数据类型的相互转换

    这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • C#的四种基本数据类型

    本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#中的try catch finally用法分析

    这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • 基于PostgreSQL和mysql数据类型对比兼容

    这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
  • toString.call()通用的判断数据类型方法示例

    这篇文章主要给大家介绍了关于toString.call()通用的判断数据类型方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-29
  • C#线程入门教程之单线程介绍

    这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
  • javascript数据类型验证方法

    这篇文章主要为大家分享了一个简单的javascript数据类型验证方法,感兴趣的小伙伴们可以参考一下...2016-01-05
  • 示例详解react中useState的用法

    useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • C#数据类型及其转换详解

    这篇文章主要介绍了C#数据类型及其转换详解,在C#中,数据类型可以分为几种类型,今天小编通过本文给大家详细介绍,需要的朋友可以参考下...2020-07-10
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • php中php://input的用法详细

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
  • MySQL中的主键以及设置其自增的用法教程

    1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24