批改状态:合格
老师批语:
<?php// 类型转换// 1. 临时转换: 用户// http://by.io/012601/demo1.php?id=3$id = $_GET['id'];var_dump($id);echo '<br>';// id应该是整数才方便运算// url中的内容全部默认是字符串$id = (int)$id;if($id===3){echo '数据存在';};echo '<br>';$n = 123;var_dump($n,(string)$n,(float)$n);echo '<hr>';var_dump((array)$n,((array)$n)[0]);$srt = 'php';//字符串转数组的意义不大echo $str[0],$str[1],$str[2],'<br>';var_dump((object)$str,((object)$str)->scalar);var_dump($str);echo '<br>';// 2. 自动转换: 系统//每一种操作符,它要求的操作数类型是固定的,如果不满足就自动转换echo 222 + "333";echo '<br>';//"+"要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换echo 222+ (int)'111';echo '<br>';echo 123 + 'php111';echo '<br>';echo (int)'php111';echo '<br>';echo 123 + (int)'php111';echo '<br>';//".",希望两边都是字符串,如果不是就转换echo 'php' . 123 . '<br>';//等价于echo 'php' . (string)123 . '<br>';// 最常用的是布尔转换if (!$email) echo '没定义邮箱';var_dump($email);echo var_export((bool)null);echo '<hr>';if (!isset($email)) echo '没定义邮箱';// 3. 永久转换: 只针对变量$price = 111;echo gettype($price),'<br>';echo gettype((string)$price),'<br>';echo gettype($price),'<br>';//永久转换settype($price,'string');echo gettype($price),'<br>';
<?php//类型检测function sum1($a, $b){printf('%d + %d = %d<br>', $a, $b, ($a + $b));}sum1(11, 22);// sum1('php','cn');function sum2($a, $b){// is_numeric():检查参数是否是数值或数值型的字符串// 123, "123"都是有效的数据if (is_numeric($a) && is_numeric($b))printf('%d + %d = %d<br>', $a, $b, ($a + $b));else echo '参数类型错误';}sum2(22,33);sum2('php','cn');echo '<br>';sum2(1,'111');function sum3 ($a,$b){if (is_int($a) && is_int($b))printf('%d + %d = %d<br>', $a, $b, ($a + $b));else echo '参数类型错误';}sum3(11,'22');echo '<br>';sum3(11,22);sum3(11.1,22.2);echo '<hr>';// php7+: 参数类型检测,支持复合类型,也支持标量function sum4(float $a,float $b) : string{// 参数类型限定可以自动识别数值或数值型的字符串, is_numeric()// return sprintf('%d + %d = %d<br>', $a, $b, ($a + $b));return $a . ' + ' . $b . ' = ' . ($a + $b). '<br>';}echo sum4(11, "22");echo sum4(11.11, 22.22);echo '<hr>';// is_scalar(): 检测变量类型是否是标量var_export(is_scalar(1));echo '<br>';var_export(is_scalar(new class{}));echo '<br>';var_export(is_scalar([]));echo '<br>';// null 不是标量var_export(is_scalar(null));// 函数/闭包/回调echo '<br>';var_export(is_scalar(function(){}));
<?php// 1. 变量声明// 变量必须要用"$"为前缀: $name// 严格区分大小写$userName = '小明';$password = 123;echo '账户名:'.$userName, ',','密码:'.$password,'<br>';$_ = 1;$a1 = 2;$_1 = 3;var_dump($_, $a1, $_1);echo '<hr>';// 1. 驼峰式: $itemPrice,变量,对象的属性和方法, getUser()// 2. 蛇形: set_public(),函数// 3. 帕斯卡: UserModel, 类,与驼峰式很像,所以也叫: 大驼峰// 4. 全大写: 常量// 函数不区分大小写function hello($name){return 'Hello ' . $name;}echo hello('小明'),'<br>';echo HELLO('小红'),'<br>';// 2. 变量赋值$color = 'red';echo gettype($color),'<br>';$url = 'site';$$url = 'php中文网';// $$url: 可变变量,变量标识符来自另外一个变量echo $url . ' => ' . $$url . '<br>';echo $url . ' => ' . $site . '<br>';// 默认是"值传递"$price1 = 111;$price2 = $price1;printf('price1 = %d, price2 = %d<br>', $price1, $price2);$price1 = 222;printf('price1 = %d, price2 = %d<br>', $price1, $price2);echo '<hr>';// 引用赋值$price1 = 333;// $price2 =& $price1;$price2 = &$price1;// 引用赋值其实就是给原始变量起一个别名,并未创建新变量printf('price1 = %d, price2 = %d<br>', $price1, $price2);$price1 = 444;printf('price1 = %d, price2 = %d<br>', $price1, $price2);// 3. 预定义变量// 超全局变量: 数组,任何地方都可以访问,不受作用域限制// $GLOBALS: 引用全局作用域中可用的全部变量// $_SERVER: 服务器和执行环境信息// $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组// $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本// $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组// $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组// $_SESSION:当前脚本可用 SESSION 变量的数组// $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组// $_ENV: 通过环境方式传递给当前脚本的变量的数组// $GLOBALS$name = '小明';$email = 'xm@php.cn';printf('name = %s, email = %s<br>', $name, $email);printf('name = %s, email = %s<br>', $GLOBALS['name'], $GLOBALS['email']);echo 'IP: '. $_SERVER['REMOTE_ADDR']. '<br>';echo '浏览器: '. $_SERVER['HTTP_USER_AGENT']. '<br>';echo '脚本绝对路径 = '. $_SERVER['SCRIPT_FILENAME']. '<br>';echo '脚本相对路径 = '. $_SERVER['SCRIPT_NAME']. '<br>';echo '当前脚本名称 = '. $_SERVER['PHP_SELF']. '<br>';// http://by.io/012601/demo3.php?id=1&name=admin// id=1&name=admin 查询字符串,给GET请求用echo '查询字符串 : '. $_SERVER['QUERY_STRING']. '<br>';// http://by.io/012601/demo3.php?id=1&name=admin// http://by.io/012601/demo3.php?id=1&name=admin// /id/5/name/xm: path_infoecho 'PATH_INFO = '. $_SERVER['PATH_INFO']. '<br>';echo 'URI: ' . $_SERVER['REQUEST_URI'], '<br>';echo $_GET['id'];
<?php// 常量// 是固定的值,一旦创建不可更新,不可删除// 常量不是变量,前面不要加" $ "// 常量推荐全部大写,多个单词之间用下划线连接// 1.函数define('NAME', '小明');// 2. 关键字const SEX = '男';printf('姓名: %s, 性别: %s<br>', NAME, SEX);function a() {define('ID', 123);// const A = 1;}a();echo ID;if (true) {define('NAME', '小明');}echo NAME;echo '<br>';// const 只支持字面量,不允许表达式define('B', '我是' . NAME);echo B, '<br>';define('ARR1', [1,2,3]);print_r(ARR1);const ARR2 = [1,2,3];print_r(ARR2);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号