PHP5数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
字符串
你可以将任何文本放在单引号和双引号中:
<?php $x = "Hello world!"; echo $x; echo "<br>"; $x = 'Hello world!'; //单引号 包括字符串字面量 双引号包含的字符串 可包含变量 echo $x; ?>
整型
在以下实例中我们将测试不同的数字。 PHP var_dump()函数返回变量的数据类型和值:
?php $x = 5985; var_dump($x); echo "<br>"; $x = -345; // 负数 var_dump($x); echo "<br>"; $x = 0x8C; // 十六进制数 var_dump($x); echo "<br>"; $x = 047; // 八进制数 var_dump($x); ?>
浮点型
<?php $x = 10.365; var_dump($x); echo "<br>"; $x = 2.4e3; var_dump($x); echo "<br>"; $x = 8E-5; var_dump($x); ?>
布尔型
布尔型可以是 TRUE 或 FALSE。
数组
数组可以在一个变量中存储多个值
<?php $cars=array("Volvo","BMW","Toyota"); var_dump($cars); ?>
对象
在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:
<?php class Car { var $color; function Car($color="green") { $this->color = $color; } function what_color() { return $this->color; } } function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { echo " $prop = $val "; } } // instantiate one object $herbie = new Car("white"); // show herbie properties echo "herbie: Properties "; print_vars($herbie); ?>
NULL 值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
<?php $x="Hello world!"; $x=null; var_dump($x); ?>
常量
常量是一个简单值的标识符。该值在脚本中不能改变。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数,函数语法如下:
define(string constant_name, mixed value, case_sensitive = true)
该函数有三个参数:
- constant_name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_sensitive:可选参数,指定是否大小写敏感,设定为 true 表示不敏感。
以下实例我们创建一个 区分大小写的常量, 常量值为 "Welcome to W3CSchool.cc!":
<?php define("GREETING", "Welcome to W3CSchool.cc!"); echo GREETING; ?>
字符串函数和字符串连接
<?php $txt1="Hello world!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2; // 字符串连接运算符 . echo strlen("Hello world!"); //获取字符串长度 echo strpos("Hello world!","world"); //获取子串位置 //字符串中第一个字符的位置是 0 ?>
运算符
<?php //其他运算符略.. //逻辑运算符 ! && || and or xor //数组运算符 合并: + 比较:== != === !== $x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; // $x 和 $y 数组合并 var_dump($z); var_dump($x == $y); var_dump($x === $y); var_dump($x != $y); var_dump($x <> $y); var_dump($x !== $y); ?>
流程控制语句 同js
<?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } $t=date("H"); if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } $t=date("H"); if ($t<"10") { echo "Have a good morning!"; } else if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } $favcolor="red"; switch ($favcolor) { case "red": echo "Your favorite color is red!"; break; case "blue": echo "Your favorite color is blue!"; break; case "green": echo "Your favorite color is green!"; break; default: echo "Your favorite color is neither red, blue, or green!"; } //循环 $i=1; while($i<=5) { echo "The number is " . $i . "<br>"; $i++; } $i=1; do { $i++; echo "The number is " . $i . "<br>"; } while ($i<=5); for ($i=1; $i<=5; $i++) { echo "The number is " . $i . "<br>"; } $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?>
数组
<?php $cars=array("Volvo","BMW","Toyota"); //数组定义 数值数组 echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; //访问数组元素 //数组长度count() $cars=array("Volvo","BMW","Toyota"); echo count($cars); //count() 函数用于返回数组的长度 //遍历数值数组 $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");//定义关联数组 echo "Peter is " . $age['Peter'] . " years old."; //遍历关联数组 $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
数组排序
PHP - 数组排序函数
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
//sort() $cars=array("Volvo","BMW","Toyota"); sort($cars); $clength=count($cars); for($x=0;$x<$clength;$x++) { echo $cars[$x]; echo "<br>"; } //rsort() $cars=array("Volvo","BMW","Toyota"); rsort($cars); //asort() arsort() 关联数组排序 value $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); asort($age); arsort($age); //ksort() krsort() 关联数组排序 key $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort($age); krsort($age); ?>
超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_COOKIE
- $_FILES
- $_ENV
- $_SESSION
$GLOBAL 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;
<?php echo $_SERVER['PHP_SELF']; // /try/demo_source/demo_global_server.php echo "<br>"; echo $_SERVER['SERVER_NAME']; // w3cschool.cc echo "<br>"; echo $_SERVER['HTTP_HOST']; // www.w3cschool.cc echo "<br>"; echo $_SERVER['HTTP_REFERER']; //来由 echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; //浏览器 echo "<br>"; echo $_SERVER['SCRIPT_NAME']; // /try/demo_source/demo_global_server.php //另外$_SERVER对象还包括 SERVER_ADDR, SERVER_PROTOCOL ,REQUEST_METHOD..等属性 ?>
$_REQUEST 用于收集HTML表单提交的数据。
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body> </html>
$_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"
<html> <body> <!--页面post给自己--> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_POST['fname']; echo $name; ?> </body> </html>
$_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
$_GET 也可以收集URL中发送的数据。
<html> <body> <a href="test_get.php?subject=PHP&web=w3cschool.cc">Test $GET</a> </body> </html> //test_get.php <html> <body> <?php echo "Study " . $_GET['subject'] . " at " . $_GET['web']; ?> </body> </html>