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

php数组的遍历讲解 for foreach list each key_PHP教程

Jul 14, 2016 am 10:11 AM
for foreach key list 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

热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 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

我后悔之前不知道的 7 个 PHP 函数 我后悔之前不知道的 7 个 PHP 函数 Nov 13, 2024 am 09:42 AM

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

See all articles