现在的位置: 首页 > 编程语言 > 正文

PHP基础语法

2020年01月15日 编程语言 ⁄ 共 3892字 ⁄ 字号 评论关闭

  对于字符串中的指定字符做增删改查操作

  $string='abcdef';

  //查找

  echo $string{0};

  echo '

  ';

  //注意,修改的时候只能一个字符替换一个字符

  $string{1}='z';

  echo $string;//azcdef

  echo '

  ';

  $string{4}='!';

  echo $string;//azcd!f

  echo '

  ';

  $string='abc';

  $string{0}='hello';

  echo $string;//hbc

  echo '

  ';

  //不要对于中文字符做操作

  $string='你好';

  var_dump($string);//'你好' (length=6)

  echo '

  ';

  //删除 不知道为啥这部分我做了没效果,还是输出原来的字符串;

  如果把''改成' ',原来的字符位置又会多出一个空格,不明白不明白??

  $string='abcdef';

  $string{2}='';

  echo $string; //abcdef

  echo '

  ';

  $string{0}=''; //abcdef

  echo $string;

  //添加字符

  echo '

  ';

  $string='abc';

  $string{3}='d';//abcd

  echo $string;

  echo '

  ';

  $string='abc';//abc00e

  $string{5}='e';

  echo $string;//abc e

  不存在的变量返回null

  销毁变量使用unset()

  $a=$b=$c='king';

  //一次销毁3个变量

  unset($a,$b,$c);

  var_dump($a,$b,$c);

  php换行符

  1.\n是使源代码换行,而浏览器显示的内容不换行(用双引号包裹);

  2.

  是使浏览器显示的内容换行,而源代码不换行

  临时转换

  $var=true;

  //临时转换成整型

  var_dump((int)$var,(integer)$var);//1 1

  //临时转换成浮点类型

  var_dump((float)$var,(double)$var,(real)$var);

  //临时转换成字符串型

  $var=true;

  var_dump((string)$var);

  //临时转换成布尔类型

  $var='3king';

  var_dump((bool)$var,(boolean)$var);

  //临时转换成空

  $var='hello';

  var_dump((unset)$var);

  //临时转换成数组

  $var=123;

  var_dump((array)$var);

  //临时转换成对象

  $var=12.3;

  var_dump((object)$var);

  通过系统函数完成临时转换

  $var='3king';

  $res=intval($var);

  var_dump($res);//3

  var_dump(floatval($var),doubleval($var));

  var_dump(boolval($var));

  $var=true;

  var_dump(strval($var));

  得到变量的类型 gettype()

  type可能的值为:

  “boolean” (或为“bool”,从 PHP 4.2.0 起)

  “integer” (或为“int”,从 PHP 4.2.0 起)

  “float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)

  "string"

  "array"

  "object"

  “null”

  永久转换的例子

  $var=123;

  echo gettype($var);//integer

  echo '

  ';

  //永久转换settype($var,$type)

  settype($var,'bool');

  var_dump($var);

  通过变量函数库检测变量的类型,is_*

  //检测是否为整型

  $var=0;

  var_dump(

  is_int($var),

  is_integer($var),

  is_long($var)

  );

  //是否为字符串型

  $var='3king';

  var_dump(

  is_string($var)

  );

  //是否是布尔类型

  $var=false;

  var_dump(is_bool($var));

  //是否为标量类型

  $var=123;

  $var=null;

  var_dump(is_scalar($var));

  //是否为null

  $var=null;

  var_dump(is_null($var));

  //是否为数组

  $var=array();

  var_dump(is_array($var));

  //是否是对象

  $var=new StdClass();

  var_dump(is_object($var));

  //是否是资源

  $var=fopen('./test.html','r');

  var_dump(is_resource($var));

  //检测是否为数值型或者是字符串形式的数值

  //123 23.4 '123.34' '23'

  $var=123;

  var_dump(is_numeric($var));

  系统常量

  echo PHP_VERSION;//7.3.4

  echo PHP_OS;//WINNT

  echo PHP_INT_MAX;//...很长

  define(NAME,VALUE):定义常量

  常量一经定义不能改变

  常量默认区分大小写,使用的时候按照定义时的大小写来使用

  define('TEST','this is a test');

  echo TEST;

  define('TEST_ARRAY',array('a','b','c'));

  var_dump(TEST_ARRAY);

  const关键字定义常量

  const TEST='this is a test';

  echo TEST;

  //通过constant来获取常量的值

  echo constant('TEST');

  //通过defined()检测常量是否存在

  var_dump(defined('TEST'));

  //get_defined_constants():返回的是数组,得到所有已定义的常量,包含系统常量和自定义常量

  print_r(get_defined_constants());

  魔术常量

  echo __LINE__;

  echo __FILE__;

  echo __DIR__;

  $_REQUEST 能接收 get,post 方式传值,它包含$_GET,$_POST,$_COOKIE 三个预定

  义变量的内容,为什么在页面上给$_GET 和$_POST 赋值以后打印$_REQUEST,里面却为

  空?

  原因:$_REQUEST 包含$_GET 和$_POST 的值,必须是通过 get,post 两种方式传过来的

  数据,单独在页面给$_GET 和$_POST 赋值时,没有给$_REQUEST 赋,它代替不了$_GET

  和$_POST

  define 定义数组常量时报错

  原因:数组常量定义是 PHP7 新加的特性,在 7 之前的版本,常量的值仅允许标量和 null。

  标量的类型是 integer, float,string 或者 boolean。所以数组是不允许的,需要将版

  本升级到 7 才能定义数组常量。

  整数支持递增递减运算符

  浮点类型支持递增递减运算符

  布尔类型不支持递增递减运算符

  null只支持递增运算符,不支持递减运算符

  字符串只支持递增运算符,根据ascii码来计算

  $str='a';

  echo ++$str;//b

  $str='a1';

  echo ++$str;//a2

  $str='a9';

  echo ++$str;//b0

  $str='B';

  echo ++$str;// C

  ord($character):得到指定字符的ASCII码值

  $str='a';

  echo ord($str);

  echo '

  ';//98

  chr($ascii):根据指定ASCII得到对应的字符

  echo chr(98);//b

  字符连接符

  echo 'a'.'b'.'c';//abc

  echo 'a','b','c';//abc

  $str1=' hello ';

  $str2=' world ';

  $newStr=$str1,$str2;//报错

  $newStr=$str1.$str2;// hello world

  echo $newStr;

  mt_rand($min,$max):产生随机数

  echo mt_rand(1,9);

  echo mt_rand(1000,9999);

  生成四位数的多色验证码

  $code=''.mt_rand(1,9).'';

  $code.=''.mt_rand(1,9).'';

  $code.=''.mt_rand(1,9).'';

  $code.=''.mt_rand(1,9).'';

  echo $code;

  比较结合运算符(太空船运算符)

  前面>后面 1

  前面<后面 -1   前面=后面 0   var_dump(   1.5<=>1.5,

  1.5<=>1.2,

  1.5<=>4.6

  );

  var_dump(

  'a'<=>'a',

  'c'<=>'a',

  'c'<=>'e'

  );

  NULL合并操作符

  从左到右第一个存在且不为null的操作

  如果全部都是null,就返回null

  php7之后开始有

  var_dump(

  true??'king'??123,

  0??false??null??'hello world',

  $abcdef??'hello world'

  );

  字符串搜索相关

  strpos($string,$search):返回字符串首次出现的位置,位置从0开始;如果没找到返回false

  stripos($string,$search):忽略大小的去搜索

  strrpos($string,$search):返回字符串最后一次出现的位置;如果没找到返回false

  strripos($string,$search):忽略大小写的去搜索最后一次出现的位置

  $str='abcadebf';

  var_dump(strpos($str,'bc')); //1

  var_dump(stripos($str,'B'));//1

  var_dump(strrpos($str,'a'));//3

  var_dump(strripos($str,'A'));//3

  错误抑制符@

  $var=123;

  @settype($var,'king');

  三元运算符相当于缩写的if...else

  exp1?:exp3

  $res=0?:'this is a test';

  var_dump($res);

  max() min()

  echo max(123,234,35234234);//得到最大值

  echo min(-123,23,5346);//得到最小值

  date($format,$time):格式化日期时间

  Y:4位的年份

  m:2位月份

  d:2位的日

  H:2位的小时

  i:2位的分钟

  s:2位秒数

  w:返回一周内的第几天,0~6(0代表星期日)

  date_default_timezone_set($timezone):设置时区

  date_default_timezone_get():得到当前默认的时区

  time():得到当前的时间戳

  date_default_timezone_set('PRC');//Asia/Shanghai

  echo date("Y年m月d日 H:i:s");//2020年01月09日 15:29:18

  echo date("Y-m-d H:i:s",time());//2020-01-09 15:29:18

  echo date("Y/m/d",time());//2020/01/09

  echo date_default_timezone_get();//PRC

  if语句的另外的形式

  if(true){

  }else{

  }

  if(true):

  else:

  endif;

  -----------------------------

  if(true){

  }else if($username=='queen'){

  }else {

  }

  if(true):

  elseif(true):

  else:

  endif;

  exit($msg)|die($msg)程序终止执行

  exit;

  die;

  exit("

  Game Over ...

  ");

  for循环

  for($i=1;$i<=3;++$i){   echo $i;   echo "\n";   }   echo $i,"\n";//4   for($j=4;$j<=0;$j++){   echo 'this is a test   ';   }   echo $j,"\n";//没有循环,初始值4   //生成四位数多色验证码   for($i=0;$i<4;$i++){   echo ''.mt_rand(0,9).'';   }   goto跳转

  echo 'starting...';

  goto TEST;

  echo 'this is a test';//不显示,被跳过

  TEST://TEST标识符

  echo '跳入TEST';

  //goto 不能跳入循环、switch...case 函数和类

  //goto TEST1;//报错

  for($i=1;$i<=5;$i++){   TEST1:   echo '跳入循环TEST1';   }   for($i=1;$i<=5;$i++){   if($i==3){   goto TEST2;   }   }   TEST2:   echo '跳出循环TEST2';

抱歉!评论已关闭.