数组
- 数组属于复合类型数据
- 数组实际上是一个有序的映射
分类
索引数组 数组的下标(key)是数字
关联数组 数组的下标(key)是字符串
不论是索引数组还是关联数组,都是通过key找到value的。
创建
array( )形式
创建索引数组
array(value1,value2,value3...)
例子一
// 通过array()创建下标连续的索引数组
$arr1 = array('A',2,false);
输出结果:
Array ( [0] => A [1] => 2 [2] => )
false转换成空字符串
例子二
//创建手动指定下标的数组
$arr2 = array(2=>'a',3=>true);
输出结果:
Array ( [2] => a [3] => 1 )
创建关联数组
array(key1=>value1, key2=>value2, key3=>value3...)
例子
// 定义关联数组
$userInfo = array(
'username'=>'Tim',
'age'=>23,
'email'=>'404491216@qq.com'
);
print_r($userInfo);
输出结果:
Array ( [username] => Tim
[age] => 23
[email] => 404491216@qq.com
)
[ ]形式 (5.4新增)
$arr = [value1,value2,value3...]
例子
// []创建数组
$arr = ['A','B',true,2];
print_r($arr);
输出结果:
Array ( [0] => A [1] => B [2] => 1 [3] => 2 )
rang()
用于创建下标连续的索引数组。
range(min, max(, 步进制))
步进制:每个值相差多少,默认为1。
例子
// range()例子 值为1-10
$arr = range(1,10,2);
print_r($arr);
输出结果:
Array
(
[0] => 1
[1] => 3
[2] => 5
[3] => 7
[4] => 9
)
compact()
compact('变量名')
用于创建关联数组。
先定义在外部变量,然后传入变量即可生成数组。
注意,变量名需要用引号
括起来。
例子
// compact()例子
$username = 'Tim';
$age = 23;
$email = 'xxx@xx.com';
// 注意,这里变量名需要用引号
$userInfo = compact('username','age','email');
输出结果:
Array ( [username] => Tim [age] => 23 [email] => xxx@xx.com )
define()
define(key,value)
例子
define('TEST1',array('a','b','c'));
print_r(TEST1);
输出结果:
Array ( [0] => a [1] => b [2] => c )
循环
for循环
for循环只能遍历下标连续
的索引数组
补充:
count() 得到数组中的参数个数
如果是null,count()将返回0。
例子
// 使用rang()快速创建数组
$arr = range('a','d');
for($i=0; $i<$len; $i++){
echo $arr[$i],'<br/>';
}
输出结果:
a,b,c,d
for each 循环
只要value
foreach (数组名称 as $value)
key和value 都要
foreach (数组名称 as $key => $value)
注意:
- 遍历空数组,不会执行循环体;
- for each遍历时,操作的是数组的副本 ( php7新特性 )
- 通过引用遍历,有更好的迭代特性,对数组的修改会影响循环 ( php7 )
例子
// php7新特性——foreach操作的是数组的副本
$arr = [0,1,2];
$ref =&$arr;
foreach($arr as $v){
echo $v,'<br/>';
// 老版本会删除1,但php7操作的是副本,所以没影响
unset($arr[1]);
}
foreach输出结果:
0 1 2
// 都是0、2 因为1被删除了
var_dump($arr,$ref);
var_dump输出结果:
array (size=2)
0 => int 0
2 => int 2
)