list函数:它的功能:将索引数组下标为0的对应我变量1,下标1的对应变量2,依此类推。
list( , , $three) = array('张三' ,'李四' ,'王五');
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three----'.$three.'<br />';
//输出如下:
$one----
$two----
$three----王五
注:无匹配的输出显示为空,有匹配的就输出
each函数:
功能:传入一个数组。它会将其中的一个元素拆为个新数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。
函数 | 功能 |
---|---|
array_shift | 弹出数组中的第一个元素 然后改变数组原有下标 |
array_unshift | 在数组的开始处压入元素 然后改变数组原有下标 |
array_push | 向数组的末尾处压入元素 |
array_pop | 弹出数组末尾的最后一个元素 |
current | 读出指针当前位置的值 |
key | 读出指针当前位置的键 |
next | 指针向下移 |
prev | 向上移 |
reset | 指针到开始处 |
end | 指针到结束处 |
php 数组的常用函数(默写级别)
函数名 | 功能 | |
---|---|---|
array_combine() | 生成一个数组,用一个数组的值作为键名,另一个数组值作为值 | |
range() | 创建并返回一个包含指定范围的元素的数组。 | |
compact() | 创建一个由参数所带变量组成的数组 | |
array_fill() | 用给定的值生成数组 | |
array_chunk() | 把一个数组分割为新的数组块 | |
array_merge() | 把两个或多个数组合并为一个数组 | |
array_slice() | 在数组中根据条件取出一段值,并返回 | |
array_diff() | 返回两个数组的差集数组 | |
array_search() | 在数组中搜索给定的值,如果成功则返回相应的键名 | |
array_splice() | 把数组中的一部分去掉并用其它值取代 | |
array_sum() | 计算数组中所有值的和 | |
in_array() | 检查数组中是否存在某个值 | |
array_key_exists() | 检查给定的键名或索引是否存在于数组中 | |
shuffle() | 将数组打乱,保留键值 | |
count() | 计算数组中的单元数目或对象中的属性个数 | |
array_flip() | 返回一个键值反转后的数组 | |
array_keys() | 返回数组所有的键,组成一个数组 | |
array_values() | 返回数组中所有值,组成一个数组 | |
array_reverse() | 返回一个元素顺序相反的数组 | |
array_count_values() | 统计数组中所有的值出现的次数 | |
array_rand() | 从数组中随机抽取一个或多个元素,注意是键名 | |
array_unique() | 删除重复值,返回剩余数组 | |
sort() | 按升序对给定数组的值排序,不保留键名 | |
rsort() | 对数组逆向排序,不保留键名 | |
asort() | 对数组排序,保持索引关系 | |
arsort() | 对数组逆向排序,保持索引关系 | |
ksort() | 按键名对数组排序 | |
krsort() | 将数组按照键逆向排序 | |
natsort() | 用自然顺序算法对数组中的元素排序 | |
natcasesort() | 自然排序,不区分大小写 | |
array_filter() | 去掉数组中的空元素或者预定元素 | |
extract | 将键变为变量名,将值变为变量值 |
、项目中实战应用
说明:在项目中,数组的变化好多,当然foreach功不可没!当然也可以用while、each等等方法,但是foreach最为方便了!下边简要说一下几个常见的项目实战!
实战1:将二维关联数组变为一维普通数组
还是第四列出关联二维数组,如下:
1 2 3 4 5 6 |
|
现在我们只要 name 一列的内容,当然我们可以用以下的方法来实现,
1 2 3 4 |
|
但有时候我们不得不将之列为一个一维数组,于是我们就有了以下的方法:
1 2 3 4 5 6 |
|
以上通过赋空数组值,foreach 这个空数组等于我们的值,就得到了一个新的数组!以上代码的结果如下:
1 2 3 4 5 6 7 |
|
这个数组明显是:一维普通数组,如下:
1 |
|
好了,将二维关联数组变为一维普通数组就写到了这里!
实战2 :二级分类以及无限级分类
很明显,我们从数据库中取出来的数据就是一个二维数组,而且是二维关联数组。那么,我们怎么取出父分类?怎么取出对应父分类的子分类呢?
首先要说明的是:几乎所有的分类都是一个数据库模式,因此我们十分有必要了解它的结构,还有怎么取出对应的数据!
对于二级分类,为了说明方便,我从网上找一个比较好说明的例子,那就是“新闻分类“!
好了,废话不多说,开始正题!我们先写一个数组。
1 2 3 4 5 6 7 8 9 10 |
|
同时,数据库是这个样子的。
说明:数据库的分类就是这个样子的!取出来的数组也是这个样子的!一般这样子的!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
那么首先我们得知道我们想要的结果是什么样子呢?这一点:我们必要知道!(以前我对这方面了解比较不深,又常用开源程序,因此导致我不怎么会写这方面了)
我们最终想要的结果是这样子的!(不怕大家笑话,这一点我请一个朋友帮的忙才解决的!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
很明显,这里数组多了一个字段,就是 children!
那么,怎么 从 $original_array 变为 $output_array呢?这里有我一个朋友做的函数,当然也用到 foreach!
函数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
那们怎么使用呢?
1 2 |
|
完整使用方法如下:
1 |
|
函数之后,我们这样调用就得到了一级分类与二级分类!
1 2 3 4 5 |
|
结果如下:
附:$output_array 这个数组,我们使用print_r,就可以得到如下的结果!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
|