一.定义数组
通过在方括号内指定键名来给数组赋值,其代码格式如下:
php">$arr[$key] = value
其中,$arr为数组名;$key为键名,其类型为整型或字符串;value为值,可以为任意数据类型。
1.索引数组:定义一个索引数组,代码如下:
$student[0] = '张亮‘;
$student[1] = '李丽’;
$student[2] = '王坤';
该示例将几个人的姓名存在数组$student中,第一个元素的值为张亮,第二个元素的值为李丽,第三个元素的值为王坤。
也可以定义如下索引数组,value的值可以为任意数据类型。
$student[0] = 123; //值为整型
$student[1] = '孙琦'; //值为字符串型
$student[2] = 65.5; //值为浮点数
$student[3] = true; //值为布尔类型
2.关联数组。示例如下:
$student['id'] = '2008001';
$student['name'] = '张琪';
$student['sex'] = '女';
$student['address'] = '河南省';
$student['tel'] = '18237832347';
上述示例定义了一个关联数组$student,数组元素的“键”都是字符串,并且“键”与“值”具有一一对应的关系。
二.使用array[]定义数组
使用array()定义数组时,是使用 “键=>值”的方式接收数组的元素,各个元素之间用逗号分隔开,语法格式如下:
$arr = array(key1 => value1,key2 => value2,...);
其中$arr表示数组名;key1,key2表示键名;可以是数字,也可以是字符串;value1,value2表示对应的值,可以是任意类型的数据。
1.索引数组
定义索引数组,示例如下:
$student1 = array('张亮','李丽','王飞'); //省略键名
$student2 = array(1=>'张琪',4=>'王飞'); //指定键名
上述代码定义$student1只指定了数组元素的值,没有指定键名,则$student1默认为索引数组,且键名从0开始依次递增,分别是"0,1,2"。
$student2数组变量的键名是指定的,第一个元素的键名为1,第二个元素的键名为4,这中方法在定义的时候不常用。
2.关联数组
$student = array('id' => '1008001', 'name'=>'张琪', 'sex'=>'女', 'address' =>'河南省', 'tel'=>'18237832347');
还可以定义既有索引表示方式又有关联表示方式的数组元素,例如:
$arr = array(5,'a','id' => 123, 3=>'b','c');
5的键名为0,'a'的键名为1,123的键名为'id','b'的键名为3,'c'的键名为4,这种方法很少用
三.使用短数组语法定义数组
$student =['id'=>'2008001', 'name' => '张琪', 'sex' => '女'];
$nam = ['张亮','李丽','王飞'];
用[]代替array(),分别定义一个关联数组$student和一个索引数组$name。
四.二维数组的定义
$students = array(
'科学1班' => array('1' => '张亮', '2' => '李丽'),
'科学2班' => array('1' => '李风','2' => '张森'),
'科学3班' => array('1' => '李艳丽', '2' => '马良龙')
)
五.访问,输出数组
$数组名[键名]
示例1:
php">$student = array('id' => '2008001', 'name'=> '张琪','sex'=>'女');//定义一个关联数组$student
echo $student['id']; //输出结果:2008002
echo $student['name']; //输出结果:张琪
echo $student['sex']; //输出结果:女
php">$name = array('张亮','李丽','王飞'); //定义一个索引数组$name
echo $name[0]; //输出结果为:张亮
echo $name[1]; //输出结果为:李丽
echo $name[2]; //输出结果为:王飞
通过以上方式可以访问数组的某一个元素,如果想输出数组元素的所有值,可以使用print_r()和
var_dump()函数来实现。
1.print_r()函数
语法格式如下:
print_r(mixed $expression [,bool $return])
其中,参数expression是要打印的表达式,如果参数expression是字符串,整型或float类型,这输出变量值本身,如果参数expression是数组变量,将按照一定格式显示键和元素。
示例2:
$student = array('id' => '2008001', 'name' => '张琪', ' sex' => '女');
print_r($student);
如果想要获取print_r()输出的内容,可使用return参数。该参数默认值为false,当此参数为true时,print_r()会直接返回string格式的信息,而不是输出:
php">$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
$a = print_r($student,true); //$a包含了print_r的输出
echo $a;
2.var_dump函数
语法格式如下:
void var_dump (mixed $expression [,mixed $ expression [,...] ])
示例4:
php">$student = array('id'=>='2008001','name'=>'张琪','sex'=>'女');
var_dump($student);
在输出数组时,建议使用<pre>标签将print_r()函数和var_dump()函数的调用语句包围。<pre>标签将保留空格和换行符,使输出更加清晰明了。
代码如下:
php">echo'<pre>';
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
print_r($student);
echo'</pre>';
六.遍历数组
所谓遍历数组,就是对数组的每一个元素依次进行访问。
第一种格式:
foreach (array_expression as $value)
{
statement
}
第二种格式:
foreach (array_expression as $key => $value)
{
statement
}
第一种语法格式仅将数组的值赋值给$value,第二种格式不仅将数组的值赋值给$value,而且将当前的键名赋值给$key。
示例3-1:使用第一种格式遍历一维数组
php"><?php
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
foreach($student as $value){
echo $value;
echo'</br>';}
?>
示例3-2:使用第二种格式遍历一维数组。
php"><?php
$student = array('id'=>'2008001','name'=>'张琪','sex'=>'女');
foreach($student as $key => $value) {
echo $key.'=>'.$value;
echo '<br/>';}
?>
例3-3:用上述方法遍历二维数组:
php"><?php
$students = array(
'科学1班' => array('张亮','李丽'),
'科学2班' => array('李风','张森'),
'科学3班' => array('李艳丽,'马良龙')
); //定义二维数组$students
foreach ($students as $key => $value) //循环读二维数组,$value仍为数组
{echo $key .':  '; //输出第一维度的键名foreach ($value as $k => $v) //遍历一维数组$value中的数据{echo $k.'=>'.$v; //输出一维数组的键名和值echo ' '; //输出空格}
echo'</br>'; //输出换行
}?>
foreach()函数能访问遍历数组中的每一个元素的值,那么在遍历数组时,如果改变了当前元素$value的值,数组中元素的值是不会变的。
php"><?php
$arr = array(2,3,6);
foreach($arr as $value){$value = $value+4;
}
print_r($arr);
若想通过$value改变数组中的值,可以在关键字as后的元素值前面加上"&"符号,即遍历数组语句改为foreach($arr as & $value)
七.删除数组
当数组中不需要某个元素时,可以使用unset()函数进行删除,其语法格式为:
void unset (mixed $var [,mixed...])
其中,参数var表示要删除的变量名。
示例3-4:
php"><?php
$arr = array(5,4,3);
unset($arr[0]); //删除数组中的一个元素
print_r($arr);
unset($arr[2]);
print_r($arr);
?>;
运行结果:
示例3-5:删除二维数组元素
php"><?php
$student = array(array('2008001','李正'),array('2008910','张亮'),array('2008970','刘洋')
);
unset($student[0]);
echo'<pre>';
print_r($student);
echo'</pre>';
?>
unset($student)删除的是整个数组
八.常见数组函数
1.count()函数:功能用于统计数组arr中元素的个数。
语法:int count(mixed $arr[,int $mode])
如果数组arr为多维数组的话,可以将mode参数的值设置为1或者COUNT_RECURSIVE,会递归计算多维数组arr中所以元素的个数。
示例:
php"><?php
$arr1 = array(4,8,9);
echo count($arr1); //输出3
$arr2 = array(array(1,2,3),array(4,5,6),array(7,8,9));
echo count($arr2); //输出3
echo count($arr2,1); //输出12
?>
2.max()函数
语法:mixed max(array $values)
示例:
php">$arr1 = array(4,8,9);
echo max($arr1); //输出9
$ arr2 = array('张亮','王飞');
echo max($arr2); //输出王飞
3.min()函数
语法:mixed min(array $values)
示例:
php">$arr1 = array(4,8,9);
echo min($arr1); //输出4
$arr = array('张亮','王飞');
echo min($arr2); //输出张亮
4.array_sum()函数
功能:将数组arr中所有值的和以整数或浮点数的结果返回
说明:PHP会自动将数组中的非数值类型的数据转换成整数或浮点数
语法:number array_sum(array $arr)
示例:
php">$arr1 = array(4,8,9);
echo array_sum($arr1); //输出21
$arr2 = array('1 张亮','2 王飞');
echo array_sum($arr2); //输出3
$arr3 = array('张亮','王飞');
echo array_sum($arr3); //输出0
5.array_product()函数
功能:将数组arr中所有值的乘积以整数或浮点数的结果返回
PHP会自动将数组中的非数值类型的数据转换成整数或浮点数 。
示例:
php"><?php
$arr1 = array(4,8,9);
echo array_product($arr1); //输出结果288
$arr2 = array('1 张亮','2 王飞');
echo'<br>';
echo array_product($arr2); //输出结果为2
$arr3 = array('张亮','王飞');
echo'</br>';
echo array_product($arr3); //输出结果0
?>
6.array_count_values()函数
功能:统计数组arr中所有值出现的次数,结果返回一个新数组。新数组中用arr的值作为键名,该值出现的次数作为新数组的值。
语法: array array_count_values(array $arr)
示例:
php">$arr = array(4,8,9,4,8);
print_r(array_count_values($arr1); //输出array ([4] => 2 [8] => 2 [9] => 1)
$arr2 = array('张亮','王飞','张亮');
print_r(array_count_values($arr2)); //输出array ([张亮] => 2 [王飞] => 1)
九.数组指针函数
1.current()函数
功能:用于返回数组arr中当前单元的值。
语法:mixed current (arr &$arr)
示例:
php"><?php
$arr1 = array(4,8,9);
echo current($arr1);
$arr2 = array('01' =>'张亮','02' =>'王飞','03' =>'李娟');
echo'</br>';
echo current($arr2);
?>
2.key()函数
功能:用于返回数组arr中当前单元的键名。
语法:mixed key(array $arr)
php">$arr1 = array(4,8,9); //输出0
echo key($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo key($arr2); //输出01
3.nex()函数
语法:mixed next(array &$arr)
示例:
php">$arr1 = array(4,8,9,10);
echo next($arr1); //输出8
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo next($arr2); //输出王飞
4.prev()函数
功能:返回数组内部指针指向前一个单元的值,如果没有更多单元就返回false。
语法:mixed prev(array &$arr)
示例:
php">$arr1 = array(4,8,9,10);
next($arr1);
echo prev($arr1); //输出4
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
next($arr2);
echo prev($arr2); //输出张亮
5.end()函数
功能:将数组arr的内部指针移动到最后一个单元,并返回该单元的值。
语法:mixed end(array &$arr)
示例:
php">$arr1 = array(4,8,9,10);
echo end($arr1); //输出10
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
echo end($arr2); //输出李娟
6.reset()函数
功能:将数组arr的内部指针倒回到第一个单元,并返回第一个数组单元的值。
语法:mixed reset(array &$arr)
php">$arr1 = arry('01'=>'张亮','02'=>'王飞','03'=>'李娟');
next($arr1);
next($arr1);
echo reset($arr1); //输出张亮
十.检索函数
1.array_keys()函数
功能:用于获取arr数组中的键名,返回值是数组。如果指定了可选参数search_value,则只返回search_value值的键名,否则数组中的所有键名都会被返回。
php">$arr1 = array(2,4,6);
$result1 = array_keys($arr1);
print_r($result1); //输出array([0]=>0 [1]=>1 [2]=> 2)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_keys($arr2,'王飞');
print_r($result2); //输出array([0]=>02)
2.array_values()函数
功能:返回arr数组中的所有值并为其建立数字索引。
语法:array array_values(array $arr)
示例:
php">$arr1 = array(2,4,6);
$result1 = array_values($arr1);
print_r($result1 ); //输出array ([0]=>2 [1] =>4 [2]=> 6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_values($arr2);
print_r($result2); //输出array([0] => 张亮 [1]=> 王飞 [2]=>李娟)
3.in_array()函数
功能:在数组中寻找给的值,如果找到放回true,否则返回false
示例:
php">$arr1 = array(2,4,6);
$result = in_array(2,$arr1);
echo $result; //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 =in_array('张亮',$arr2);
echo $result2; //输出1
$result3 = in_array('张亮',$arr2,true);
echo $result3; //输出1
4.array_search()函数
示例:
php">$arr1 = array(2,4,6);
$result1 = array_search(4,$arr1);
echo $result1; //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_search('张亮',$arr2);
echo $result2; //输出01
$arr3 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result3 = array('张亮',$arr2,true);
echo $result3; //输出01
5.array_key_exists()函数
功能:检查给定的键名key是否存在数组arr中。若给定的Key存在于数组中时返回true,否则返回false。key可以是任何能作为数组索引的值。
示例:
php">$arr1 = array(2,4,6);
$result1 = array_key_exists(0,$arr1);
echo $result1; //输出1
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_key_exists('张亮',$arr2);
echo $result2; //返回false
6.array_unique()函数
功能:该函数先将值作为字符串排序,然后对每个值只保留第一个遇见到的键名。
php">$arr1 = array(2,4,6,6,3);
$result1 = array_unique($arr1);
print_r($result1); //输出array ([0]=> 2 [1]=> 4 [2] => 6 [4] => 3)
十.排序函数
1.sort()函数
功能:按升序对arr数组的值排序。为数组赋予新的"整数"键名,原有的键名将被删除。
示例:
php">$arr1 = array(2,6,6,3);
sort($arr);
print_r($arr); //输出array ([0] => 2 [1] => 3 [3] => 6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
sort($arr2);
print_r($arr2); //输出array ([0]=>张亮 [1]=>李娟 [2]=>王飞)
2.asort()函数
功能:按升序对arr数组的值排序,排序后保持数组元素原有的 "键值对" 对应关系。
示例:
php">$arr1 = array(2,6,6,3);
asort($arr1);
print_r($arr1); //输出array ([0] => 2 [3] => 3 [1] => 6 [2]=>6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
asort($arr2);
print_r($arr2); //输出array([01]=>张亮 [03]=>李娟 [02]=>王飞)
3.rsort()函数
功能: 按降序对arr数组的值排序。为数组赋予新的 "整数"键名,原有的键名将被删除。
示例:
php"><?php
$arr1 = array(2,6,6,3);
rsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
rsort($arr2);
echo'</br>';
print_r($arr2);
4.arsort()函数
功能:按降序对arr数组的值排序,排序后保持数组元素原有的"键值对"对应关系。
示例:
php"><?php
$arr1 = array(2,6,6,3);
arsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
arsort($arr2);
echo'</br>';
print_r($arr2);
?>
5.ksort()函数
功能:按照键名对arr数组元素进行升序排序,排序后保持数组元素原有的"键值对"对应关系。
示例:
php"><?php
$arr1 = array(2,6,6,3);
ksort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
ksort($arr2);
echo'</br>';
print_r($arr2);
?>
6.krsort()函数
功能:按照键名对arr数组元素进行降序排序保持数组元素原有的"键值对"对应关系。
示例:
php"><?php
$arr1 = array(2,6,6,3);
krsort($arr1);
print_r($arr1);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
krsort($arr2);
echo'</br>';
print_r($arr2);
?>
7.shuffle()函数
功能:打乱arr数组进行随机排序,为排序后的数组元素赋予新的键名。
示例:
php">$arr1 = array(2,6,6,3);
shuffle($arr1);
print_r($arr1); //输出array ([0]=> 6 [1]=>2 [2]=>6 [3]=>3)
8.array_reverse()函数
功能:返回一个和数组arr元素顺序相反的新数组,如果preserve_key为true,则保留原来的键名,但是非数字的键则不受这个设置的影响,总是会被保留。
示例:
php">$arr1 = array(2,6,3);
$result1 = array_reverse($arr1);
print_r($result1); //输出array ([0]=> 3 [1] =>6 [2] => 2)
$arra = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result2 = array_reverse($arr2,true);
print_r($result2); //输出array ([03]=> 李娟 [02} => 王飞 [03]=> 张亮)
$arr3 = array(2,6,3);
$result3 = array_reverse($arr1,true);
print_r($result3); //array ([2] =>3 [1]=>6 [0]=>2)
十一.数组元素操作函数
1.array_push()函数
功能:将一个或多个元素var添加到数组arr的末尾,并返回新数组元素的个数。
示例:
php">$arr1 = array(2,6,3);
array_push($arr1,9,10);
print_r($arr1); //输出array([0] =>2 [1]=>6 [2]=>3 [3]=>9 [4]=>10)
$arr2 = array('01'=>'张亮','02'=>'王飞');
array_push($arr2,'李娟');
print_r($arr2); //输出array ([01]=>张亮 [02]=>王飞 [0]=>李娟)
2.array_pop()函数
功能:弹出并返回arr数组的最后一个元素,并将数组arr的长度减1。如果arr为空(或者不是数组)将返回null。
示例:
php">$arr1 = array(2,6,3);
array_pop($arr1);
print_r($arr1); //输出array ([0]=>2 [1]=>6)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
array_push($arr2,'李娟');
print_r($arr2); //输出array ([01]=>张亮[02]=>王飞[0]=>李娟)
3.array_unshift()函数
功能:在数组arr开头插入一个或多个元素,返回新数组中元素的个数。
示例:
php">$arr1 = array(2,6,3);
array_unshift($arr1,0,1);
print_r($arr1) ; //输出array([0]=>0[1]=>1[2]=>2[3]=>6[4]=>3)
$arr2 = array('01'=>'张亮','02'=>'王飞');
array_unshift($arr2,'李娟');
print_r($arr2); //输出array ([0]=>李娟[01]=>张亮[02]=>王飞)
4.array_shift()函数
功能:移除数组arr的第一个元素,返回该元素的值,然后将数组arr其他的元素先前移动一位。如果array为空(或者不是数组),则返回null。
示例:
php">$arr1 = array(2,6,3);
array_shift($arr1);
print_r($arr1); //输出 array([0]=>6 [1]=>3)
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
array_shift($arr2);
print_r($arr2); //输出 array([02]=>王飞[03]=>李娟)
十二.其它函数
1.is_array()函数
功能:判断当前变量是否是数组,如果是则返回true,否则返回false
示例:
php"><?php
$arr = array(2,6,3);
if(is_array($arr)) {echo '$arr 是数组';
}else {echo'$arr不是数组';
}
?>
2.array_merge()函数
功能:合并一个或多个数组
示例:
php"><?php
$arr1 = array(2,6,3);
$arr2 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result1 = array_merge($arr1,$arr2);
print_r($result1);$arr3 = array(2,6,3);
$arr4 = array('张亮','王飞','李娟');
$result2 = array_merge($arr3,$arr4);
print_r($result2);$arr5 = array('01'=>2,6,'02'=>3);
$arr6 = array('01'=>'张亮','02'=>'王飞','03'=>'李娟');
$result3 = array_merge($arr5,$arr6);
print_r($result3);
3.array_rand()函数
功能:从数组中随机取出一个或多个元素的键。
示例:
php"><?php
$arr = array('张亮','王飞','李娟');
print_r(array_rand($arr));
print_r(array_rand($arr,2));
?>
4.range()函数
功能:创建一个给定范围的数组。
示例:
php"><?php
$arr1 = range('a','d');
print_r($arr1);
$arr2 = range(1,6,2);
print_r($arr2);
?>