php中的数组
0x01.数组的定义与类型
如何定义数组?
一般都是使用 array() 函数定义的数组
<?php
$arr = array('jsp','asp','php');
print_r($arr);
?>
数组的两种类型
数组类型分
1.索引数组
2.关联数组
索引数组,其实就是全名叫 数字索引数组,顾名思义
就是以数字索引的数组,也就是上面那串代码定义的,就索引数组
(在PHP中,数组的值第一位是 0)
关联数组,也很简单,数组其实就是由键值组成的,与python中的字典相似,关联数组其实就是我们自定义的键
<?php
$arr = array('name'=>'young','old'=>'17','from'=>'中国');
print_r($arr);
?>
这样看的话可能不是很清楚,我们可以直接查看源代码,看起来不会懵逼
这样其实就是关联数组,而直接使用array定义的就是的 索引数组,第一位是0,觉得很麻烦。也可以这样定义,把第一位定义成 1
0x02. 一维数组、二维数组 与 多维数组
<?php
$arr1 = array('young','17','中国'); //一维数组
print_r($arr1); //输出数组
echo "<br>";
//定义二维数组
$arr2 = array(
'name'=>array('张三','李四','王五'),
'old'=>array('20','21','23'),
);
print_r($arr2);//输出数组
?>
上面定义的其实就是一维数组,其实听着很高大尚,其实就是跟嵌套差不多
在一个数组中嵌套这另外一个数组
这样就更容易的对比了,我们也可以查看源代码,这样看起来舒服
然后我们继续在数组中嵌套一层就是 三维数组,几层嵌套,就是几层数组,但是建议不要太多
0x03.数组遍历
1)for循环遍历数组
<?php
$arr = array(1,'张三',"a公司","北京市","(010)987654321","gao@qq.com");
for($i=0;$i < count($arr);$i++){
echo $arr[$i]." ";
}
?>
我们依旧右键点击查看源代码
其实for循环主要是通过 $arr[$i]
首先定义一个一维数组,然后使用for循环,初始值为0,count()就是判断数组的长度,有几个值,这里的话是从1开始算的,每遍历一次就 加1.
它先是 执行 $i=0
,
然后代入 $arr[0]
就输出了1,然后 i 加 1。判断是否小于数组的值,然后再次循环...
直到 i 为6时,才停止循环。因为 6 不可能小于 6。
对于多维数组的遍历,只需要多加一个for循环即可
2)foreach() 遍历数组
foreach()
遍历有2种形式
第一种:
$arr = array('baidu','taobao','google');
foreach($arr as $value){
循环体
}
第二种:
$arr = array('baidu','taobao','google');
foreach($arr as $key => $value){
循环体
}
①.第一种解释:
其实第一种遍历的是数组里面的值
<?php
$arr = array("baidu","taobao","google");
foreach($arr as $value){
print_r($arr);
echo '$value为:'.$value."<br>";
}
?>
我其实不用 print_r 的,但是为了清楚
首先foreach($arr as $value)
$arr
其实就是一维数组里面的内容,而变量$value
其实就是数组中的值,也就是说,$arr as $value
其实就是遍历数组中的内容,把 $arr
中的内容,赋值给 value
至于 $value
可以自定义命名的
②第二种解释:
<?php
$arr = array('baidu','taobao','google');
foreach($arr as $key => $value){
echo $key.'=>'.$value."<br>";
}
?>
其实就是把键也给遍历了,并且赋值给了 key
0x04.字符串与数组转换
1. 将字符串变为数组 explode()
<?php
$arr = 'baidu,taobao,google';
$array = explode(',',$arr);
print_r($array);
?>
其实这里就是分割,这边是逗号,然后我们就以逗号分割,分割的时候
它会返回数组(这里也就是分割)
2. 将数组变为字符串 implode()
<?php
$arr = array('baidu','taobao','google');
$str = implode(',',$arr);
echo $str;
?>
implode('符号',str)
看上面这个就知道了,符号就是说,要用什么分割
0x05.数组的一些操作
1)统计数组个数 count()
<?php
$arr = array('baidu','taobao','google');
$str = count($arr);
echo $str;
?>
然后这里的话就是,使用count函数,如果要统计多维数组呢?
<?php
$arr = array(
'baidu'=>array('www.baidu.com'),
'taobao'=>array('www.taobao.com'),
'google'=>array('www.google.com')
);
$str = count($arr,1);
echo $str;
?>
这里只需要在count() 函数添加一个 1 参数就可以了
2)数组中的 "增" array_push()
使用 array_push(add,add_var)
<?php
$arr = array('baidu','taobao','google');
array_push($arr,'boke','baidu');
print_r($arr);
?>
3) 数组中的 "删" array_unique()
这时候我们看上面似乎多添加了一个百度
<?php
$arr = array('baidu','taobao','google');
array_push($arr,'boke','baidu');
print_r($arr);
//上面是添加,下面删除重复值
$del = array_unique($arr);
print_r($del);
?>
4) 数组中的 "查" array_search()
①array_search(var,array,strict)
: 查找 值 返回键
var :是我们需要查找的值
array:是指定被我们查询的数组
strict:是可选参数,当参数为 true时,还会给数组中检查给定值得类型
这个函数是查找指定的值,然后返回键,如果没有查找到的话返回 null,不是flase
<?php
$arr = array('baidu','taobao','google');
$result = array_search('taobao',$arr);
print_r($result);
?>
②通过键查找 值
<?php
$arr = array('baidu','taobao','google');
echo $arr[0]
?>
这样就可以查找到了
5) 数组中的 "改"
<?php
$arr = array('baidu','taobao','google');
$arr[0] = "boke";
print_r($arr);
?>
这里的修改,其实就是在查询的基础上 重新赋值一下就可以了
数组的的一些其他操作
获取数组的最后一个元素 array_pop()
array_pop 函数返回数组的最后一个值,并且数组长度减 1,如果数组为空,或者不是数组,则返回 null
array_pop(array)
这里的array 其实就是 定义的那个要获取的数组
<?php
$arr = array('baidu','taobao','google');
$array = array_pop($arr);
print_r($arr);
echo "<br> 被弹出的函数:$array";
?>
除了上面这些常用的操作,还有 联合使用 list(),each(),while()
遍历数组