1.PHP支持两种数组:索引数组(indexed array)和关联数组(associative array),前者使用数字作为键,后者使用字符串作为键。
2.遍历索引数组
2.1 for循环语句
2.2 while循环语句
2.3 do...while循环语句
2.4 foreach语句
2.5使用list()
list()只能用于下标从0开始的索引数组,语法格式如下:
void list(mixed var,mixed...)
<?php
$myarray=array('Kimi',5,'Angela');
list($nickname,$age,$name)=$myarray;
echo $nickname.' '.$age.' '.$name;
?>
2.6 使用each()(不明白)
2.7 混合使用list()和each()遍历数组(不明白)
3.遍历关联数组
常常使用foreach语句来遍历
下面是一个使用foreach语句遍历二维数组的例子:
<?php $myarray=array( 'boy'=>array( 'name'=>'Kimi', 'age'=>4, 'nickname'=>'kimi', ), 'girl'=>array( 'name'=>'Cindy', 'age'=>5, 'nickname'=>'wind' ), ); foreach($myarray as $gender_key => $gender_value){ echo $gender_key.' => <br>'; foreach($gender_value as $key => $value){ echo '  '.$key.' => '.$value.'<br>'; // 似乎是增加一个空格 } } ?>
4.数组的操作
4.1 检查数组中是否存在指定的值使用array_search()
<?php $myarray=array('name'=>'Kimi','age'=>5,'hobby'=>'reading',1=>2013); $key=array_search('Kimi',$myarray); echo '<p>'.$key; $key=array_search(5,$myarray); echo '<p>'.$key; $key=array_search('read',$myarray); var_dump($key); $key=array_search(2013,$myarray); echo '<p>'.$key; ?>
4.2 把一个或多个数组合并为一个数组使用array_merge()
函数返回合并后的数组,如果待合并的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。如果待合并的数组中包含相同的数组键名,后面的值将不会覆盖原来的值,而是附加到该元素后面。
<?php $girl=array('name'=>'Cindy','age'=>5); $boy=array('name'=>'Kimi','age'=>4); $girl_date=array(0=>2000); $boy_date=array(0=>2001); $myarray=array_merge($girl,$boy,$girl_date,$boy_date); var_dump($myarray); ?>
4.3 把一个数组分割为多个数组使用array_chunk()
语法格式如下:
array array_chunk(arrray input,intsize [, bool $preserve_keys])
其中,input是分割的数组变量,size是分割成的每个数组的元素个数(最后一个数组的元素可以小于size),可选参数preserve_keys默认为false,表示分割后的数组索引将从0开始重新编排。若设置为true,则分割后的数组将保留原数组中的键名。一维数组分割一次变成二维数组。
4.4 统计数组中所有值出现的次数使用array_count_values()
语法格式如下:
array array_count_values( array $input)
其中,input是待统计的数组。该函数返回一个关联数组,其键名为input数组中的元素的值,键值为该元素的值在$input数组中出现的次数
<?php $boy=array('Kimi',5,'age'=>5,'name'=>'Kimi',2005); $counts=array_count_values($boy); print_r($counts); var_dump($counts); ?>
4.5 计算数组中所有值的和使用array_sum()
语法格式如下:
number array_sum(array $array)
4.6 删除数组中重复的值使用array_unique()
语法格式如下:
array array_unique(array $array)
其中,$array是待操作的数组。该函数首先将键值作为字符串进行排序,保留第一次遇到的值所对应的键名,最后返回一个没有重复值得新数组。
4.7 计算数组中的元素数目使用count()
语法格式如下:
int count( array array[,intmode])
其中,array是待计算的数组,可选参数mode默认值为0,表示不进行递归统计元素个数,可以设置为1(或COUNT_RECURSIVE),表示递归统计元素的数目。
<?php $myarray=array( 'boy'=>array('name'=>'Kimi', 'nickname'=>'K', 'age'=>5), 'girl'=>array('name'=>'Cindy', 'nickname'=>'C', 'age'=>4), ); echo '<P>不递归统计元素个数:'.count($myarray); echo '<p>递归统计元素个数:'.count($myarray,COUNT_RECURSIVE); ?>
4.8 对数组正向排序使用sort()
语法格式如下:
bool sort( array &array[,intsort_flags])
其中,参数array是待排序的数组,可选参数sort_flags可以为下面4种设置之一。
·SORT_REGULAR:通过正常比较进行排序(不改变类型)
·SORT_NUMBER:将数组元素作为数字来比较进行排序
·SORT_STRING:将数组元素作为字符串来比较并进行排序
·SORT_LOCATE_STRING:根据当前的区域(locate)设置把数组元素作为字符串比较并进行排序
4.9 对数组逆向排序使用rsort()
类比正向排序。
4.10 将数组中的元素顺序翻转使用array_reverse()
语法格式如下:
array array_reverse( array array[,boolpreserve_keys])
其中,array是待翻转的数组,可选参数preserve_keys默认为FALSE,表示不保留原有的键名,设置为TRUE后,表示翻转数组元素时保留原有的键名。(关于可选参数,存在疑惑,见下面程序)
<?php $myarray=array('gdp'=>'GDP','ht'=>'HT','lq'=>'LQ','lc'=>'LC'); $new_array=array_reverse($myarray,FALSE);//无论是FALSE还是TRUE,键名依旧未改变 echo '<p>'; print_r($new_array); ?>
4.11 用给定的值填充数组使用array_pad()
语法格式如下:
array array_pad( array input,intpad_size, mixed $pad_value)
其中,参数input是待填充的数组,参数pad_size是填充后数组的大小,参数padvalue是用来填充的元素。如果pad_size为正,填充的元素将位于$input右侧,反之亦然。
4.12 计算多个数组的交集使用array_intersect()
语法格式如下:
array array_intersect( array array1[,arrayarray2 [, array $...] ] )