博客列表 >php数据类型的转换与检测、变量的基础知识

php数据类型的转换与检测、变量的基础知识

咸鱼老爷
咸鱼老爷原创
2021年03月12日 14:11:48540浏览

类型转换

  • 临时转换:用户

    • 转换成整数 (int)
      $id='123'; echo (int)$id; echo gettype((int)$id);
    • 转换成字符串 (string)
      echo (string)$id; echo gettype((string)$id);
    • 转换成浮点数(float)
      $id='123.456';echo (float)$id; echo gettype((float)$id);
    • 转换成数组 (array)$n,访问 ((array)$n)[0]
      $id='123.456'; echo ((array)$id)[0]; echo gettype((array)$id);

      字符串转对象(object)$str,((object)$str)->scalar;
      $id='123.456'; echo ((object)$id)->scalar; echo gettype((object)$id);
  • 自动转换:系统

    每一种操作符,它要求的操作数类型是固定的,如果不满足就自动转换
    • ‘+’ 要求参与计算的数据都是数值类型,如果不是,就自动转换为数值
      1. echo 1+'2','<br>';
      2. echo (int)'a2','<br>';
      3. echo 1+'2a','<br>';
      4. echo (int)'2a','<br>';

      如果字符串开始是英文,则不能转换或者为0,如果开始是数值型字符串,则省略掉后面的英文字符串
    • ‘.’ 两边都是字符串,如果不是就转换
      echo 'php'. 123 .'<br>'; echo 'php'.(string)123;
    • 布尔类型转换
      1. if(!$a) echo'没有定义';
      2. var_dump($a);
      3. var_export((bool)null);
      4. if(!isset($a)) echo'没有定义';
  • 永久转换:只针对变量

    settype()设置变量类型 gettype()获取变量类型

    1. $price=6666;
    2. settype($price,'string');
    3. echo $price;
    4. echo gettype($price);

    变量类型检测

    • is_numeric() 检测参数是否是数值或者数值型的字符串;
      1. function sum($a,$b){
      2. if(is_numeric($a) && is_numeric($b))
      3. echo $a.'+'.$b.'='.($a+$b).'<br>';
      4. else echo'参数类型错误';
      5. }
      6. sum(1,2);
      7. sum('1',2);
      8. sum('1','2');
      9. sum('php','abc');
    • is_string()
    • is_boole()
    • is_array()
    • is_object()
    • is_null()
    • is_resource()是否资源
    • is_scalar()检测变量类型是否是标量 (单值) 数值对象不是
      php7+:参数类型检测,支持复合类型也支持标量
      1. function sum1(int $a,int $b){
      2. return $a.'+'.$b.'='.($a+$b);
      3. }
      4. echo sum1('1',2);

    变量代码中需要暂存的数据,按名访问

    • 合法标识符
      • 仅允许使用 英文字母(a-z,A-Z),数字(0-9),下划线(_);
      • 禁止使用数字开头;
      • 标识符有二类:预定义的(保留字,关键字) 自定义;
  • 变量声明

    变量声明规则
    -1.变量必须要以’$’为前缀:$name,
    -2.变量严格区分大小写,函数不区分大小写

  1. function hello($name){
  2. return $name;
  3. }
  4. echo HELLO('php').'<br>';
  5. echo hello('html').'<br>';
  6. $name='php';
  7. $Name='html';
  8. echo $name.'<br>';
  9. echo $Name;


命名规则
-1、驼峰式命名
-2、蛇形 xx_xxx()函数
-3、帕斯卡UserModel 类,大驼峰
-4、常量 全大写

  • 变量赋值

    • $$可变变量,变量标识符来自另外一个变量
      1. $$url='站点';
      2. echo $url.'=>'.$$url.'<br>';
      3. echo $url.'=>'.$site.'<br>';
    • 默认是值传递
      1. $price2=$price;
      2. printf('price=%d,price2=%d <br>',$price,$price2);
      3. $price=456;
      4. printf('price=%d,price2=%d <br>',$price,$price2);
    • 引用赋值 其实就是给原始变量起一个别名,并为创建新变量
      1. $price2=& $price;printf('price=%d,price2=%d <br>',$price,$price2);
      2. $price=789;
      3. printf('price=%d,price2=%d <br>',$price,$price2);
  • 预定义变量

    超全局变量:数组,任何地方都可以访问,不受作用域限制
    $GLOBALS:引用全局作用域中可用的全部变量
    $_SERVER:服务器和执行环境信息
    $_GET:通过url参数传递给当前脚本的变量的数组
    $_POST:当http post请求的content-type=application/X-www-data
    $_FILES:通过http post方式上传到当前脚本的文件的数组
    $_COOKIE:通过http Cookies方式传递给当前脚本的变量的数组
    $_SESSION:当前脚本可用session变量的数组
    $_REQUEST:默认包含了$_GET $_POST $_COOKIE 的数组
    $_ENV:通过环境方式传递给当前脚本的变量的数组
    1. $email='admin@qq.com';
    2. printf('name=%s,email=%s',$name,$email);
    3. echo '<br>';
    4. printf('name=%s,email=%s',$GLOBALS['name'],$GLOBALS['email']);
    1. // var_dump($_SERVER);
    2. echo 'ip:'.$_SERVER['REMOTE_ADDR'].'<br>';
    3. echo '浏览器:'.$_SERVER['HTTP_USER_AGENT'].'<br>';
    4. echo '当前php文件绝对路径='.$_SERVER['SCRIPT_FILENAME'].'<br>';
    5. echo '当前php文件相对路径='.$_SERVER['SCRIPT_NAME'].'<br>';
    6. echo '当前php文件名称='.$_SERVER['PHP_SELF'].'<br>';
    7. echo '查询条件='.$_SERVER['QUERY_STRING'].'<br>';
    8. echo 'PATH_INFO='.$_SERVER['PATH_INFO'].'<br>';
    9. echo 'URI:'.$_SERVER['REQUEST_URI'].'<br>';
    10. echo $_GET['id'];

    常量

    常量是固定的值,一旦创建不可更新不可删除
    常量不是变量,不加$;常量推荐全部大写,多个常量之间用_连接
  • 1 define()函数
    define('NATION','CHINA');
  • 2 关键字 const
    const GENDER='男';
    printf('国籍:%s,性别:%s',NATION,GENDER);
  • const 和define的区别
    • const运行在编译阶段,必须要有值
    • define()在运行阶段才创建变量
    • const 只支持字面量,不支持表达式
    • const 只用在类和全局中
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议