(小白)PHP基础学习004 20201005

(小白)PHP基础学习004 20201005

历程

  1. 单引号和双引号的区别
<?php
$str1='abc\r\ndef\t\'\"\$fg';
$str2="abc\r\ndef\t\'\"\$fg";
echo "01:",$str1,"\r";
echo "02:",$str2,"\r";
?>

结果:

01:abc\r\ndef\t'\"\$fg
02:abc
def	\'"$fg

这里可以看出,单引号里只有’被转成了’,其它都没有识别
而在双引号里:只有’没有被识别,其它都被识别了

  1. 双引号中因为能识别$符号,所以双引号中可以解析变量,而单引号不可以
<?php
$a="hello world!";
echo "I can say $a\n";
echo 'I can say $a\n';
?>

结果:

I can say hello world!
I can say $a\n

有时候我们希望把$a的值和其它字符串连在一起,但又希望电脑能识别,所以我们使用变量的专业识别符:{区分}

<?php
$a="hello world!";
echo "I can say {$a}!!\n";
?>

结果:

I can say hello world!!!

  1. 结构化定义字符串 边界符EOD的补充:
    1、上边界符EOD后面不能加任何内容,哪怕是//注释
    2、下边界符必须顶格:最左边
    3、下边界同样后面只能跟分号,不能跟任何内容。

  2. 字符串长度
    strlen()

<?php
$str1="abcd";
$str2="你好中国123";
echo strlen($str1),"\n",strlen($str2);
?>
4
15

可以发现一个中文占了3个字符

  1. 多字节字符串扩展模块:mbstring扩展(mb:Multi Bytes)
    首先加载mbstring文件
    在ini配置文件中取消注册extesion=php_mbstring
<?php
$str1="abcd";
$str2="你好中国123";
echo strlen($str1),";",strlen($str2),"\n";
echo mb_strlen($str1),";",mb_strlen($str2),"\n";
echo mb_strlen($str1,'utf-8'),";",mb_strlen($str2,'utf-8'),"\n";
?>
4;15
4;7
4;7

这样就可以对中文进行字符的统计

  1. 字符串相关函数:
    转换函数:implode(),explode(),str_split()
    implode([连接方式],数组):将数组中的元素按某个规则连接成字符串
    explode(分割字符,目标字符串)
    str_split(字符串,字符长度)分离,按指定长度进行拆分
<?php
$arr1=[1,2,3,4];
echo implode($arr1),"\n";
echo implode("~",$arr1),"\n";

$str1="ab~cde~fg";
var_dump(explode("~",$str1));
echo "\n";
var_dump(str_split($str1,2));

?>
1234
1~2~3~4
array(3) {
  [0]=>
  string(2) "ab"
  [1]=>
  string(3) "cde"
  [2]=>
  string(2) "fg"
}

array(5) {
  [0]=>
  string(2) "ab"
  [1]=>
  string(2) "~c"
  [2]=>
  string(2) "de"
  [3]=>
  string(2) "~f"
  [4]=>
  string(1) "g"
}



截取函数:trim(),ltrim(),rtrim()
	Trim():去除两边的空格,但是也可以指定要去除的内容(两边的,直到碰到一个不是目标字符为止)
	ltrim:去除左边的
	rtrim:去除右边的
<?php
$str1="   aaaabbb  cccaaabbbcccddbbbaaa    ";
$str2="aaaabbb  cccaaabbbcccddbbbaaa";
var_dump(trim($str1));
echo "\n";
var_dump(trim($str2));
echo "\n";
var_dump(ltrim($str1));
echo "\n";
var_dump(rtrim($str1));
echo "\n";
var_dump(trim($str2,"a"));
echo "\n";

?>
string(29) "aaaabbb  cccaaabbbcccddbbbaaa"

string(29) "aaaabbb  cccaaabbbcccddbbbaaa"

string(33) "aaaabbb  cccaaabbbcccddbbbaaa    "

string(32) "   aaaabbb  cccaaabbbcccddbbbaaa"

string(22) "bbb  cccaaabbbcccddbbb"

截取函数:substr(),strstr()
	substr(位置,长度):指定位置开始截取,可以指定截取长度,如果不截取就到末尾
	strstr():从匹配的位置开始截取到最后
<?php
$str="aaaabbb  cccaaabbbccccddbbbaaa";
echo substr($str,3,7),"\n";
echo strstr($str,"cccc");

?>
abbb  c
ccccddbbbaaa

大小转换函数:strtolower(),strtoupper(),ucfirst()
	全部小写,全部大写,首字母大写
<?php
$str=" a bcD EFg hi";
echo strtoupper($str),"\n";
echo strtolower($str),"\n";
echo ucfirst($str),"\n";



?>
 A BCD EFG HI
 a bcd efg hi
 a bcD EFg hi



	这里最后一个首字母是空格,所以a不会大写

查找函数:strpos(),strrpos()
	strpos():判断在目标字符串中出现的位置
	strrpos():判断在目标字符串中最后出现的位置
<?php
$a="abcabcabc";
echo strpos($a,"b"),"\n";
echo strrpos($a,"b"),"\n";
?>
1
7
替换函数:str_replace()
<?php
$a="abcabcabc";
echo str_replace("b","B",$a),"\n";
?>
aBcaBcaBc

格式化函数:printf(),sprintf()
以上两个是一样的
printf(输出字符串有点位符,顺序占位内容..):格式化输出数据
d%:十进制
s%:字符
<?php
$age=50;
$name="TOM";
printf("你好,今年我%d岁,我叫%s",$age,$name);
?>
	这里的%d和%s分别对应第一位和第二位。

其它:str_repeat(),str_shuffle()
	str_repeat():重复某个字符串n次
	str_shuffle():随机打乱某个字符串
<?php
$name="TOM";
echo str_repeat($name,5),"\n";
echo str_shuffle($name);

?>
TOMTOMTOMTOMTOM
OMT
  1. 定义数组:
<?php
//使用array关键字
$a=array(1,2,3);
var_dump($a);

//用中括号来包裹数据
$b=[4,5,6];
var_dump($b);
//隐形定义数组:给变量加一个中括号,系统自动变成数组
$c[2]=7;
var_dump($c);
//无key定义数组
$d[]=8;
var_dump($d);
//str key定义数组
$e["key"]=9;
var_dump($e);
?>
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
array(3) {
  [0]=>
  int(4)
  [1]=>
  int(5)
  [2]=>
  int(6)
}
array(1) {
  [2]=>
  int(7)
}
array(1) {
  [0]=>
  int(8)
}
array(1) {
  ["key"]=>
  int(9)
}



感觉第一次见这么牛的array

  1. PHP的数组特点
    如果数组下标都为整数:索引数组
    如果数组下标都为字符串:关联数组
    不同下标混合存在:混合数组
    数组元素的顺序以放入顺序为准,跟下标无关
    数字下标的自增长特性:从0开始自动增长,如果中间存在比较大的,那么从最大的往后增长;
    特殊值下标的自动转换
<?php
$arr[true]=true;
$arr[false]=false;
$arr[NULL]=NULL;
$arr[]="END";
var_dump($arr)
?>
array(4) {
  [1]=>
  bool(true)
  [0]=>
  bool(false)
  [""]=>
  NULL
  [2]=>
  string(3) "END"
}



php中数组元素没有类型限制,没有长度限制

  1. PHP中的数组是很大的数据,所以存储位置是堆区
  2. 多维数组
<?php
$info=array(
	array("name"=>"Jim","age"=>30),
	array("name"=>"Tom","age"=>28),
	array("name"=>"Lily","age"=>20)
);
var_dump($info);
?>
array(3) {
  [0]=>
  array(2) {
    ["name"]=>
    string(3) "Jim"
    ["age"]=>
    int(30)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(3) "Tom"
    ["age"]=>
    int(28)
  }
  [2]=>
  array(2) {
    ["name"]=>
    string(4) "Lily"
    ["age"]=>
    int(20)
  }
}
  1. 数组遍历
    foreach基本语法:
    foreach( 数 组 变 量 a s [ 数组变量 as [ as[下标=>])){
    //通过 下 标 访 问 元 素 下 标 , 通 过 下标访问元素下标,通过 访值的访问元素的值
    }
    通常,如果关联数组(字母下标),就需要下标,如果是数字下标,就直接访问值
<?php
$info=array(1,2,3,4,5,6,7);

foreach($info as $v){
	echo $v,"\n";
}

echo "-------\n";
foreach($info as $k=>$v){
	echo "key:",$k,"value:",$v,"\n";
}

?>
1
2
3
4
5
6
7
-------
key:0value:1
key:1value:2
key:2value:3
key:3value:4
key:4value:5
key:5value:6
key:6value:7



  1. for循环遍历
<?php
$arr=array(1,2,3,4,5,6,7,10);
for($i=0;$i<count($arr);$i++){
	echo "key is : ",$i,"value is :",$arr[$i],"\r";
}
?>

结果:

key is : 0value is :1
key is : 1value is :2
key is : 2value is :3
key is : 3value is :4
key is : 4value is :5
key is : 5value is :6
key is : 6value is :7
key is : 7value is :10


  1. each
    能够从一个数组中获取当前数组指针所指向的元素的下表和值,拿到之后将数组指针下移,同时将拿到的元素下标和值以四个元素的组合返回
    0下标=》取得元素的下标值
    1下标=》取得元素的值
    key下标=》取得元素的下标值
    value下标=》取得元素的值
<?php
//while配合each和list遍历数组
$arr=array(1,"name"=>"Tom",3,"age"=>30);
echo "001:\n";
print_r(each($arr));
echo "002:\n";
print_r(each($arr));
echo "003:\n";
print_r(each($arr));
echo "004:\n";
print_r(each($arr));
?>
001:
Array
(
    [1] => 1
    [value] => 1
    [0] => 0
    [key] => 0
)
002:
Array
(
    [1] => Tom
    [value] => Tom
    [0] => name
    [key] => name
)
003:
Array
(
    [1] => 3
    [value] => 3
    [0] => 1
    [key] => 1
)
004:
Array
(
    [1] => 30
    [value] => 30
    [0] => age
    [key] => age
)



数字指针移动到最后(超出范围),会返回false

  1. list是一种结构,不是一种函数(没有返回值),是list提供一堆变量去从一个数组中取得元素值,然后依次存放到对应的变量当中(批量为变量赋值:值来源于数组):list必须从索引数组中去获取数据,而且必须从0开始。
<?php
//while配合each和list遍历数组
$arr=array(1,2=>3);
list($first,$second,$third)=$arr;
var_dump($first);//对应下标0
var_dump($second);//对应下标1 因为我们第二个下标不是1,所以返回NULL
var_dump($third);//对应下标2


?>
int(1)
NULL
int(3)



  1. list和each配合特别好
    each一定有两个元素就是0和1下标元素
    list(变量1,变量2)=each(数组):
    是一种赋值运算,但是可以得到False结果(each取不到正确的结果),整个表达式为false
<?php
$arr=array(1,"name"=>"Tom",3,"age"=>30);
while(list($key,$value)=each($arr)){
	//list搭配each
	echo "key is : ".$key ." value is :".$value ."\n";
}


?>
key is : 0 value is :1
key is : name value is :Tom
key is : 1 value is :3
key is : age value is :30



  1. 数组的相关函数
    按照ASCII码进行比较,可以进行英文比较
    都是对原数组进行操作
<?php
$arr=array(3,1,5,2,0);
sort($arr);
print_r($arr);

?>
Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 5
)



排序函数:
sort():顺序排序,下标重排
rsort():逆序排序
arsort():顺序排序,下标不重排
ksort():按照key进行排序
krsort():按照key进行逆序
shuffle():随机打乱排序

<?php
$arr=array(3,"hi"=>1,"key"=>5,10=>2,0);
echo "001:sort 正序\n";
$arrTemp=$arr;
sort($arrTemp);
print_r($arrTemp);
echo "002:rsort 逆序\n";
$arrTemp=$arr;
rsort($arrTemp);
print_r($arrTemp);
echo "003:asort 正序 下标不重组\n";
$arrTemp=$arr;
asort($arrTemp);
print_r($arrTemp);
echo "004:arsort 逆序 下标不重组\n";
$arrTemp=$arr;
arsort($arrTemp);
print_r($arrTemp);
echo "005:ksort 根据key排序\n";
$arrTemp=$arr;
ksort($arrTemp);
print_r($arrTemp);
echo "006:krsort 根据key逆序\n";
$arrTemp=$arr;
krsort($arrTemp);
print_r($arrTemp);
echo "007:shuffle 打乱排序\n";
$arrTemp=$arr;
shuffle($arrTemp);
print_r($arrTemp);

?>
001:sort 正序
Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 5
)
002:rsort 逆序
Array
(
    [0] => 5
    [1] => 3
    [2] => 2
    [3] => 1
    [4] => 0
)
003:asort 正序 下标不重组
Array
(
    [11] => 0
    [hi] => 1
    [10] => 2
    [0] => 3
    [key] => 5
)
004:arsort 逆序 下标不重组
Array
(
    [key] => 5
    [0] => 3
    [10] => 2
    [hi] => 1
    [11] => 0
)
005:ksort 根据key排序
Array
(
    [0] => 3
    [hi] => 1
    [key] => 5
    [10] => 2
    [11] => 0
)
006:krsort 根据key逆序
Array
(
    [11] => 0
    [10] => 2
    [0] => 3
    [key] => 5
    [hi] => 1
)
007:shuffle 打乱排序
Array
(
    [0] => 3
    [1] => 1
    [2] => 0
    [3] => 2
    [4] => 5
)



指针函数:
reset():重置指针,将数组指针回到首位
end():重置指针,将数组指针指到最后一个值
next():指针下移,取得下一个元素的值
prev():指针上移,取得上一个元素的值
current():获取当前指针对应的元素值
key():获取当前指针对应的下标值

<?php
$arr=array(3,"hi"=>1,"key"=>5,10=>2,0);
echo "001:\n";
echo key($arr),"\n";
echo current($arr),"\n";

echo "002:\n";
next($arr);
echo key($arr),"\n";
echo current($arr),"\n";

echo "003:\n";
end($arr);
echo key($arr),"\n";
echo current($arr),"\n";

echo "004:\n";
prev($arr);
echo key($arr),"\n";
echo current($arr),"\n";

echo "005:\n";
reset($arr);
echo key($arr),"\n";
echo current($arr),"\n";

?>
001:
0
3
002:
hi
1
003:
11
0
004:
10
2
005:
0
3



其他函数:
count():获取数组的数量
array_push():从数组中加入一个元素,后面
array_shift():从前面取出一个元素
array_pop():从后面取出一个元素
array_unshift():从数组中加入一个元素,前面
array_reverse():数组元素反过来
in_array():判断一个元素在数组中是否存在
array_keys():获取一个数组的所有下标,返回一个数组
array_values():返回所有值得数组

<?php
$arr=array(3,"hi"=>1,"key"=>5,10=>2,0);
var_dump(in_array(3,$arr));
var_dump(in_array("hi",$arr));
var_dump(in_array("hello",$arr));
var_dump(in_array("abcdefghijk",$arr));
var_dump(in_array(100,$arr));

?>
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)



这里没明白的是,为什么我输入任意英文,都返回true

  1. 栈(先进后出FILO)和队列(先进先出FIFO)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值