龙空技术网

PHP入门读书笔记(十四):使用数组函数

还是码农的程序猿 122

前言:

目前我们对“foreach用法php”都比较关切,同学们都需要了解一些“foreach用法php”的相关资讯。那么小编同时在网上收集了一些关于“foreach用法php””的相关内容,希望同学们能喜欢,朋友们一起来学习一下吧!

一、遍历数组

1、使用foreach结构遍历数组

foreach 结构并非操作数组本身,而是操作数组的一个备份。

<?php$arr = array("mon"=>"星期一","tues"=>"星期二","wed"=>"星期三","thur"=>"星期四","fri"=>"星期五","sat"=>"星期六","sun"=>"星期天");foreach($arr as $day){echo $day." ";}?>输出结果:星期一 星期二 星期三 星期四 星期五 星期六 星期天
<?php$arr = array("mon"=>"星期一","tues"=>"星期二","wed"=>"星期三","thur"=>"星期四","fri"=>"星期五","sat"=>"星期六","sun"=>"星期天");foreach($arr as $key=>$value){echo  $value."($arr[$key])($key)";}?>输出结果:星期一(星期一)()星期二(星期二)()星期三(星期三)()星期四(星期四)()星期五(星期五)()星期六(星期六)()星期天(星期天)()

这里复习了循环迭代的使用方式,我自己在测试的时候不知道为什么这个$key是未提示非法的参数,这个原因待检查。

forech的语法格式:

foreach(array_expression as $value){  .... }
foreach(array_exoression as $key=>$value){ ..... }

2、使用list()函数遍历数组

list()函数是把数组中的值赋值给一些变量。与array()函数类似,list()函数不是一个真正的函数,而是一种语言结构。list()函数只能用于数字索引且索引值从0开始的数组。

语法格式:void list(mixed....);

参数 mixed 为被赋值的变量名称

list函数使用过程中还有一个each()函数。each()函数用于返回当前指针位置的数组值,同时将指针推进到下一个位置。返回的数组包含4个键,键0和key包含键名,而键1和value包含相应的数据。如果程序在执行的each()函数时指针已经位于数组末尾,则返回false

<?php$arr = array("早上","下午","晚上");while(list($index,$value)=each($arr)){echo "$index - $value <br/> ";}?>输出结果:0 - 早上 1 - 下午 2 - 晚上
二、字符串和数组的转换

1、使用explode()函数将字符串转换为数组

语法格式:array explode(string separator,string string,[int limit]);

返回值是一个字符串组成的数组,每个数组元素都是指定字符串string的一个子串。它们使用separator作为分隔符分隔出来。如果设置了limit参数,则返回的数组最多包含limit个元素,最后那个元素将包含strIng的剩余部分。如果separator是一个空字符串(“”),则函数返回false,如果separator的值在string中找不到,那么函数返回包含strIng单个元素的数组。如果参数limit是负数,则返回除了最后的limit个元素外的所有元素。

<?php$str = "早上,下午,晚上";$arr = explode(",",$str);print_r($arr);?>输出结果:Array ( [0] => 早上 [1] => 下午 [2] => 晚上 )
<?php$str = "一月#二月#三月";$arr = explode("#",$str);while(list($index,$value) = each($arr)){echo "$index - $value  <br/>";}?>输出结果:0 - 一月 1 - 二月 2 - 三月

2、使用implode()函数将数组转换为一个新字符串

语法格式:string implode(string glue,array pieces);

参数glue是字符串类型,是要传入的分隔符。参数pieces是数组类型,是要合并元素的数组变量名称。

<?php$arr = array("一月","二月","三月");$str = implode("@",$arr);echo $str;?>输出结果:一月@二月@三月
三、统计数组元素个数
语法格式:int count(mixed array,[int mode]);

参数array 是要统计的数组,参数mode是可选参数,值为0或者COUNT_RECURSIVE(1)。如果选中此参数,本函数将递归的对数组计数。对计算多维度数组的所有单元尤其有用。默认值是0。

比如统计一个二位数组的时候,直接默认使用函数只会统计一维数组的个数,而使用了COUNT_RECURSIVE 会统计到二维数组的个数,

<?php$arr = array("一月","二月","三月");$count = count($arr);echo $count;?>输出结果:3
<?php$arr = array("早上" => array("7点","9点"),"下午" => array("13点","14点","15点"));$count1 = count($arr);$count2 = count($arr,COUNT_RECURSIVE);echo "mode为0的值:".$count1;echo "<br/>";echo "mode为 COUNT_RECURSIVE 的值:".$count2;?>输出结果:mode为0的值:2mode为 COUNT_RECURSIVE 的值:7
四、查询数组指定元素
语法格式:mixed array_search(mixed needle,array haystack,[bool strict]);

参数needle是指定数组中要搜索的值,参数haystack是指定要被搜索的数组,参数strict是可选参数,如果值是true,还将在数组中检查给定值的类型。找到后返回键名,否则会返回false。在早期版本中,函数失败会返回null,而不是false。

<?php$arr = array("早上","下午","晚上");$key = array_search("下午",$arr);if($key==false){echo "没有找到";}else{$arr[$key] = "明天下午";}print_r($arr);?>输出结果:Array ( [0] => 早上 [1] => 明天下午 [2] => 晚上 

这里是寻找下午,如果返回false,打印没有找到,否则修改该值为明天下午,最后输出结果数组。

五、获取数组中的最后一个元素

语法格式:mixed array_pop(array array);

参数array为要查找的数组。array_pop()函数获取并返回了数组的最后一个元素,并将数组的长度减1,如果数组为空,或者不是数组,将返回null。

<?php$arr = array("早上","下午","晚上");$str = array_pop($arr);$count = count($arr);echo "最后一个的是:".$str;echo "<br/>";echo "数组长度:".$count;echo "<br/>";print_r($arr);?>输出结果:Array ( [0] => 早上 [1] => 明天下午 [2] => 晚上 ) 最后一个的是:晚上数组长度:2Array ( [0] => 早上 [1] => 下午 )

注意:该函数会取出值并数组长度会减小

六、向数组中添加元素

语法格式:int array_push(array array,mixed var,[mixed....]);

参数array是指定的数组,参数var是要添加的数组元素的值。Array_push()函数将数组当成一个栈,将传入的变量加入到该数组的末端,数组的长度随着入栈变量数目的增加而增加。返回数组新的单元总数。

<?php$arr = array("一月","二月","三月");$count = array_push($arr,"四月","五月"); echo "数组长度:".$count;echo "<br/>";print_r($arr);?>输出结果:数组长度:5Array ( [0] => 一月 [1] => 二月 [2] => 三月 [3] => 四月 [4] => 五月 )
七、删除数组中的重复元素
语法格式:array array_unique(array array);

参数arrray是输入的数组。将数组元素的值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名,也就是删除数组中的重复元素。

<?php$arr = array("1"=>"一月","2"=>"二月","3"=>"三月","4"=>"四月","5"=>"三月","6"=>"一月");echo "处理前:";print_r($arr);echo "<br/>";$af_arr = array_unique($arr);echo "处理后:";print_r($af_arr);?>输出结果:处理前:Array ( [1] => 一月 [2] => 二月 [3] => 三月 [4] => 四月 [5] => 三月 [6] => 一月 )处理后:Array ( [1] => 一月 [2] => 二月 [3] => 三月 [4] => 四月 )

明天我们来看看php里的日期和时间

标签: #foreach用法php