第3章 使用数组
1.创建、初始化数组: $products=array(‘Tires’,’Oil’,’Spark Plugs’);
//array()和echo一样 是一个语言结果
$numbers=range(1,10,2); //range()函数升序创建1-10的差值为2的数字数组
$letters=range(‘a’,’z’); //range()也可对字符进行操作
2.PHP中数组的大小会根据所增加元素的多少进行动态变化;
如:$products[0]=’Tres’; //若$products数组并不存在,此代码将创建一个只有一个元素的数组
3.循环访问数组:for(); 或者 foreach(); //foreach($products as $current){ echo $current.” “; }
4.关联数组:有点像map;
- 创建: $prices=array(‘Tires’=>100,’oil’=>10); //符号=>是关键字和值之间的连接符
$prices[‘Spark Plugs’]=4;
- 访问:$val=$prices[‘Oil’];
- 循环:① foreach($prices as $key=>$value){ echo $key.” – “.$value.”<br />”; }
②while($ele=each($prices){ echo $ele[‘key’].” – “.$ele[‘value’].”<br />”; }
③reset($prices);
while(list($product,$price)=each($prices)){ echo “$product – $price<br />”; }
//使用each()函数时,数组会记录当前元素
//使用reset()函数将当前元素重新设置到数组开始处
5.排序:
(一)升序:
①sort(); 普通一维数组排序,第二个参数:SORT_REGULAR(默认) 、SORT_NUMERIC(数值) 、SORT_STRING(字符串) 指定排序类型;
②asort(); 按元素值排序;
③ksort(); 按关键字排序;
(二)降序:
对应:rsort() arsort() krsort()
(三)自定义排序:
usort($products,’compare’);
//$products是被排序的数组,compare是用户定义的排序函数 function compare(…){ … }
(四)重新排序:
①shuffle(); 将数组各元素进行随机排序
②array_reverse(); 返回数组的反向数组(注意:返回的是原数组修改后的副本,可以选择覆盖原版本或不覆盖)
//array_push()函数将新元素添加到数组末尾,array_pop()函数删除并返回数组末尾元素
6.其他数组操作:
①current() 返回当前元素的值(pos()函数是其别名);
②next() & each() 都使指针前移一个元素,但each()在指针前移前返回当前元素,next()则将指针前移再返回新的当前元素;
③prev() 与next()相反,将指针回移一个位置再返回新的当前元素;
④reset() & end() 前者返回指向数组首元素的指针,后者返回指向数组末尾的指针;
7.array_walk(arr,func,[userdata]);
func(value,key,userdata);
对arr的每一个元素都应用函数func,第三个参数用来传递函数func所带参数userdata;
//当希望修改数组内容时,value用按引用方式传递(&)
8.统计数组元素个数:
count() & sizeof() 统计数组中的元素个数;
array_count_values($arr); 返回一个数组,数组的关键字为$arr的元素值,数组的值为对应关键字在$arr中出现过的次数
9.提取数组元素,转换成一系列变量:
$array=array(‘key1’=>’value1’,’key2’=>’value2’);
extract($array);
echo “$key1 $key2”; //将数组关键字转成变量名,关键字对应值作为转换后的变量值
将输出:value1 value2 value3
* 该函数还有两个可选参数extract_type和prefix,extract_type告诉extract()如何处理冲突
最常用的值是:EXTR_OVERWRITE(默认值,冲突时覆盖已有变量)、
EXTR_PREFIX_ALL(在所有变量名称前加上由prefix参数指定的值);
如:
$array=array(‘key1’=>’value1’,’key2’=>’value2’);
extract($array,EXTR_PREFIX_ALL,’my_prefix’);
echo “$my_prefix_key1 $my_prefix_key2”;
10.补充:explode(“\t”,$orders[$i]); 以\t制表符作为定界符分割传入的字符串
intval() 可将一个字符串转换成一个整数