### 数组结构打印
print_r();
### 创建一个随机数组
~~~
//第一个,第二个是范围,第三个是步长
range(1,10,3);
range('a','z',1); //26个字母
~~~
### 数组输出
* for
关联数组无法使用for循环,只能用foreach
* foreach
~~~
for ($i=0; $i <count($arr) ; $i++) {
# code...
}
foreach ($arr as $key => $value) {
}
~~~
### each()
**作用:取得当前数组,打包成一个新的数组**
返回数组当前的键/值,并对数组指针向前移动一位
~~~
$arr=array('李彦宏'=>1111,'马云'=>2222,'樟茶鸭'=>3333);
//把数组的元素拿出来,包装成一个4个元素的新数组
each($arr);
//每执行一次,指针向后移动一次,指针☞马云
$b=each($arr);
echo "<pre>";
print_r($b);
~~~
返回
~~~
Array
(
[1] => 1111
[value] => 1111
[0] => 李彦宏
[key] => 李彦宏
)
~~~
循环打印出来
~~~
while(!!$a=each($arr)){
echo $a['key'].'----'.$a['value'];
}
~~~
### list()函数
list只能认识索引数组
把数组中的值,分别赋给变量
list($a,$b)=each($arr);
~~~
$arr1=array(2,4,6,89);
list($a,$b)=$arr1;
echo $a;
~~~
取得each里面的索引值,过滤掉关联值
~~~
$arr=array('李彦宏'=>1111,'马云'=>2222,'樟茶鸭'=>3333);
list($a,$b)=each($arr);
echo $a;
echo $b;
~~~
### reset()
把数组的指针指向第一单元
在each()里面,可以重复取值
### array_unique()
移除重复数组的值,不会改变原数组
### array_flip()
交换数组中的键和值,不会改变原数组
### 数组排序sort
按数字排序,数字大小
* sort($arr,SORT_STRING);
按字符串排序,看第一个字母大小
* sort($arr,SORT_NUMERIC);
### asort
对数组排序,保持原始索引关系
### ksort
对数组进行键名排序,比较键名的大小,即key-sort
### rsort
从大到小排序
~~~
rsort
krsort
arsort
~~~
### 数组随机排序
~~~
//让内容随机出现
$arr=array(4,6,8,5,4,3,77);
$arr1=shuffle($arr);
for ($i=0; $i <3 ; $i++) {
# code...
}
~~~
### 数组逆序排列
array_reverse();
### 数组插入元素
* 末尾添加
array_push()
* 开头添加
array_unshift()
`array_push($arr,'aaa')`
### 删除元素
* 结尾删除
array_pop()
* 开头删除
array_shift()
### 随机取一个数组小标
array_rand();
~~~
//随机一个
$a=array_rand($arr,1);
//随机2个
$b=array_rand($arr,2);
$b[0];
$b[1];
~~~
### 数组指针操作
#### current($arr)
获取指针当前元素,指针不变
each()指针会下移一步
#### next($arr)
指针下一个元素
#### prev()
上一个元素
#### sizeof()
等同于count
#### array_count_values()
统计数组中每个值出现的次数,返回新的数组
#### extract()
把下标转为变量,同时把变量的值即为数组的值
~~~
$arr=array('a'=>'bac','f'=>'第二个');
extract($arr);
echo $f; //$f='第二个'
~~~