搜索
首页后端开发php教程php数组的遍历讲解 for foreach list each key_PHP教程

php数组的遍历讲解

本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历

1.for循环遍历数组

for循环是几乎所有语言都可以用的一种遍历数组的方式,但是在php语言中for循环不是遍历数组的首选

一下是for循环实现数组遍历的示例代码

/*

Designed By Androidyue

php中数组的遍历讲解*/

//for 循环遍历数组

//声明一个数组并且初始化

$array=array('Google','Chrome','Android','Youtube','Gmail');

//使用for循环遍历各数组元素,count()用来计算数组的长度

for($i=0;$i

//打印数组的元素的值

echo $array[$i],"
";

}

?>

注意:使用for遍历数组存在以下限制:

a  所遍历的数组必须是索引数组(即下标为数字的数组),不能是关联数组(下标为字符串的数组)

如下列代码

$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');

for($i=1;$i

echo $arrGoogle[$i];

}

?>

在运行时会报错,类似于这样的错误Notice: Undefined offset: 1 in D:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 13这说明for不适合用于关联数组的遍历

b,for遍历的数组既要满足是索引数组,同时下标又要是连续的整数,如果不是连续的整数则会发生提示

如下列代码

$array=array(1=>'Google',5=>'Chrome',7=>'Android',9=>'Youtube',12=>'Gmail');

//print_r($array);

 

for($i=0;$i

echo $array[$i],"
";

}

?>

这种情况下也会发生提示类似于Notice: Undefined offset: 2 in D:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 10 因此for循环遍历数组必须是索引数组而且下标必须是连续的。

2.foreach遍历数组

foreach可以说是php语言单独为遍历数组提供的一种方法(其他语言也可能有),这种遍历方法是php遍历数组的首选

foreach遍历时可以是这样的foreach($array as $key=>$value)包含键值元素  也可以是foreach($array as $value)只包含值

foreach($array as $value)示例代码

/*

Designed By Androidyue

php中数组的遍历讲解*/

//foreach实现遍历数组

$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');

//只包含值

foreach($arrGoogle as $value){

echo $value.'
';

}

?>

foreach($array as $key=>$value)的代码示例

$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');

foreach($arrGoogle as $key=>$value){

echo '第',($key+1),'个数组元素的值是',$value,'
';

}

?>

注意以上的$value和$key都是自定义的变量,因此可以根据需要更改成符合自己风格的命名方式

3.使用list函数遍历数组

list()函数是将数组中的值赋给变量 

标准语法:void list ( mixed varname, mixed ... )

用list实现对数组的遍历代码

//使用list遍历函数

//$arrGoogle=array('brand'=>'google','email'=>'Gmail','WebBrowser'=>'Chrome','phone'=>'Android');//使用关联数组不行

$arrGoogle=array('google','Gmail','Chrome','Android');

list($brand,$email,$webBrowser,$phone)=$arrGoogle;

echo $brand,$email,$webBrowser,$phone;

?>

注意:

a  list函数所接受的数组只能是索引数组,不能是关联数组!如果是关联数组,则会出现类似 Notice Undefined offset提示

b  如果只是部分取出数组的值,只需 按照这样的写法即可,list(,,$chrome,)=$arrGoogle;这样我们就可以去除chrome的信息,但是注意一定要保证list参数与数组的元素个数相同(所取值前面的个数)

c list函数赋值按索引顺序赋值

4.each函数遍历数组

each函数返回输入数组的键值对

标准语法:array each(array input array)

返回值:返回4个值0,1,key,value;其中0和key包含键名,而1和value包含相应的数据

使用each遍历数组的示例代码如下:

//使用each函数遍历数组

$arrGoogle=array('google','Gmail','Chrome','Android');

//第一次使用each取得当前键值对,并且将指针移到下一个位置

$arrG=each($arrGoogle);

//打印结果,并且换行以清晰显示结果

print_r($arrG);

print '
';

$arrGmail=each($arrGoogle);

print_r($arrGmail);

print '
';

$arrChrome=each($arrGoogle);

print_r($arrChrome);

print '
';

$arrAndroid=each($arrGoogle);

print_r($arrAndroid);

print '
';

//当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false

$empty=each($arrGoogle);

//如果指针无法继续后移返回false

if($empty==false){

print '指针以位于数组末尾,无法在向后移,故返回false';

}

?>

注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false

       开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址

5.key()遍历数组

each是用来返回数组的键名

基本语法:mixed key ( array &array )

key函数遍历数组示例代码如下

//Designed By Androidyue

//使用key函数遍历数组

//初始化一个关联数组

$arrChina=array('a'=>'Hebei','b'=>'Anhui','c'=>'Beijing','d'=>'Guangdong','e'=>'Shanghai');

//初始化一个索引数组   但是索引数组使用key返回的是空字符产

$arrCN=array('Hebei','Anhui','Beijing','Guangdong','Shanghai');//key显示的是数组的字符串下标,如果为索引数组则为空字符串

//print_r($arrChina);

while($key=key($arrChina)){//对于关联数组使用key方法可以执行

echo $key,'
';

next($arrChina);

}

print_r($arrCN);//输出一下索引数组

while($keyName=key($arrCN)){//这里调用key函数赋值后为false,while条件不成立,不进行{}之间的操作

/*if(empty($keyName)){

print '该键名为空
';

}*/

/*if($keyName=''){

print '该键名为空
';

}*/

var_dump($keyName);

}

//验证对索引数组使用key函数的返回值赋值给变量这个表达式的布尔值

if(($KeyName=key($arrCN))==false){

print 'False';

}

//对索引数组调用key函数对变量赋值

$keyName=key($arrCN);

next($arrCN);//将数组指针向后移动一位

next($arrCN);

next($arrCN);

next($arrCN);

next($arrCN);

$keyName=key($arrCN);

var_dump($keyName);//输出值和类型类型信息

//echo $keyName;

?>

注意:key函数的参数一般为关联数组,如果为索引数组那么就没有什么意义了

key函数不会推进指针移动,这里我们调用了next函数,next函数用来推进指针向后移动,下面就是next函数的介绍

6.使用对指针进行操作的函数遍历数组

a reset函数  用于将指针设置回数组的初始位置,如果需要在一个脚本中多次查看和处理一个数组,就可以使用这个函数,另外这个函数还常用于排序的结束

b.current() 函数

返回当前当前数组指针位置的值,该函数不对指针进行移动操作,需要注意这个特点

c end 将指针移到数组的最后位置,返回目标位置的值

d next 将指针向后移动一次并返回目标位置的数组值,如果当前位置为数组的最后位置,返回false

e prev 将指针向前移动一次,并返回目标位置的数组值,如果当前位置是数组起始位置,则返回false

//Designed By Androidyue

//reset方法的使用  注意以下代码调用了控制指针的函数,移动指针的操作会影响到each函数的结果

//初始化一个数组,为了简写代码,声明一个简单的数组

$arrGoogle=array('google','Gmail');

//调用each函数,并且输出返回数组 换行

echo(current($arrGoogle));//使用current函数,打印出当前的值

echo (next($arrGoogle));//调用next函数,打印下一个的值

$arrG=each($arrGoogle);

print_r($arrG);

print '
';

$arrGmail=each($arrGoogle);

print_r($arrGmail);

print '
';

$arrMore=each($arrGoogle);//当指针无法继续移动时返回false

//print_r($arrMore);

//echo $arrMore;

print '
';

//但是如果想继续输出使用重复上面的过程,那么使用reset函数将指针重置为开始位置,然后重复上面的的操作

reset($arrGoogle);

echo(end($arrGoogle));//调用end函数将指针移到数组最后一个位置,并返回值

echo(prev($arrGoogle));//调用prev函数将指针向前移动,并返回值

$arrG=each($arrGoogle);

print_r($arrG);

print '
';

$arrGmail=each($arrGoogle);

print_r($arrGmail);

print '
';

?>

7.array_reverse()

该函数是将目标数组元素逆置,如果设置preserver_key为true,则保持原先的映射,否则重置映射

该函数使用示例代码如下

$arrGoogle=array('Google','Gmail','Android','Chrome','Youtube');

echo '

';

print '进行操作之前的数组';

print_r($arrGoogle);

$arrReversed=array_reverse($arrGoogle);//不保留先前映射

print '未开启preserve_key 进行逆序操作后的结果';

print_r($arrReversed);

$arrReversedT=array_reverse($arrGoogle,1);//保留先前映射

print '开启preserver_key 进行逆序操作的结果';

print_r($arrReversedT);

echo'';

?>

8.array_flip()

该函数是将数组的键和值互换

下面是该函数的使用代码

//array_flip()函数的使用

//初始化一个索引数组

$arrGoogle=array('Google','Chrome');

//初始化一个关联数组

$arrSohu=array('son'=>'Sogou','child'=>'Chinaren','search'=>'Sogou');//如果存在值相同调用array_flip()函数会按照顺序将相同的值覆盖掉,如'son'=>'Sogou'和'search'=>'Sogou'值相同,使用array_flip()函数后,为[Sogou] => search

//对两个数组调用array_flip()函数进行操作并输出,都可以正常输出

print_r(array_flip($arrGoogle));

print '
$arrSogou未进行array_flip()函数操作之前的数组';

print_r($arrSohu);

print '
$arrSogou未进行array_flip()函数操作之后的数组';

print_r(array_flip($arrSohu));

?>

9.array_walk函数

boolean array_walk(array input_array,callback function[,mixed userdata])

array_walk()函数是将参数数组array_input中的每个元素传递给自定义的函数function 中,进行相关的操作,如果想真正修改array_input的键值对则需要将每个键值对作为引用传递给函数

自定义函数必须接受两个输入参数,第一个是数组的当前值,第二个是数组的当前键,,如果调用array_walk函数给出第三个值userdata,他的第三个值将作为第三个参数传递给自定义函数。

//Designed By Androidyue

//array_walk函数的使用

//初始化一个数组

$arrCorperate=array('移动','联通','电信');

/*

功能:一个拼接字符串的函数,将数组中的值和用户输入的参数(如果无参数输入拼接默认参数值)

参数:$value(自定义),存放数组中的值,$key存放数组中的键,$prefix可选参数,用户需要通过设置array_walk()的第三个参数给它赋值,如果用户无赋值,使用默认,或者根据需要取舍  

注意:如果用户使用了引用传值,那么数组的值要改变 

*/

function linkString(&$value,$key,$prefix='cn'){

$value=$prefix.$value;//函数体实现字符串拼接

}

array_walk($arrCorperate,'linkString');//使用array_walk()对该数组按照自定义函数操作

//array_walk($arrCorperate,'linkString','中国');//这里传第三个三处对自定义函数设置参数

print_r($arrCorperate)

?>

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477318.htmlTechArticlephp数组的遍历讲解 本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历 1.for循...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP行动:现实世界中的示例和应用程序PHP行动:现实世界中的示例和应用程序Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:轻松创建交互式Web内容PHP:轻松创建交互式Web内容Apr 14, 2025 am 12:15 AM

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python:比较两种流行的编程语言PHP和Python:比较两种流行的编程语言Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP的持久相关性:它还活着吗?PHP的持久相关性:它还活着吗?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP的当前状态:查看网络开发趋势PHP的当前状态:查看网络开发趋势Apr 13, 2025 am 12:20 AM

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP与其他语言:比较PHP与其他语言:比较Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP与Python:核心功能PHP与Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP:网络开发的关键语言PHP:网络开发的关键语言Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。