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 ' print_r($arrSohu); print ' 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) ?>
";
";
';
';
';
';
';
';
';
';
';
';
';
';
';
';';
$arrSogou未进行array_flip()函数操作之前的数组';
$arrSogou未进行array_flip()函数操作之后的数组';

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP를 사용하면 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다. 1) HTML을 포함하여 컨텐츠를 동적으로 생성하고 사용자 입력 또는 데이터베이스 데이터를 기반으로 실시간으로 표시합니다. 2) 프로세스 양식 제출 및 동적 출력을 생성하여 htmlspecialchars를 사용하여 XSS를 방지합니다. 3) MySQL을 사용하여 사용자 등록 시스템을 작성하고 Password_Hash 및 전처리 명세서를 사용하여 보안을 향상시킵니다. 이러한 기술을 마스터하면 웹 개발의 효율성이 향상됩니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

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