백엔드 개발 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

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:27 PM

cakephp4에서 날짜와 시간을 다루기 위해 사용 가능한 FrozenTime 클래스를 활용하겠습니다.

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

파일 업로드 작업을 위해 양식 도우미를 사용할 것입니다. 다음은 파일 업로드의 예입니다.

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

이번 장에서는 라우팅과 관련된 다음과 같은 주제를 학습하겠습니다.

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

패치가 불가능한 Yubico 2단계 인증 키 취약점으로 인해 대부분의 Yubikey 5, 보안 키 및 YubiHSM 2FA 장치의 보안이 손상되었습니다. 패치가 불가능한 Yubico 2단계 인증 키 취약점으로 인해 대부분의 Yubikey 5, 보안 키 및 YubiHSM 2FA 장치의 보안이 손상되었습니다. Sep 04, 2024 pm 06:32 PM

패치할 수 없는 Yubico 2단계 인증 키 취약점으로 인해 대부분의 Yubikey 5, 보안 키 및 YubiHSM 2FA 장치의 보안이 손상되었습니다. Infineon SLB96xx 시리즈 TPM을 사용하는 Feitian A22 JavaCard 및 기타 장치도 취약합니다.

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

See all articles