导语: 在PHP中如果能熟练掌握数组相关的知识,您将对PHP 有了很深刻的认识,将会处理很多事情,PHP数组确实很强大,每个PHP开发人员都需要掌握,这样才能在项目中运用自如。 一、array_values() 这个函数返回一个包含给定数组中所有键的数组,但不保留键名
导语:
在PHP中如果能熟练掌握数组相关的知识,您将对PHP 有了很深刻的认识,将会处理很多事情,PHP数组确实很强大,每个PHP开发人员都需要掌握,这样才能在项目中运用自如。
一、array_values()
这个函数返回一个包含给定数组中所有键值的数组,但不保留键名
如:$va = array(1=>23,'l'=>45,9=>90); array_values($va); 将会得到 array(23,45,90);
这个函数用的挺多的,比如:在数据库中获取列表内容后,foreach 分析数据,如果每条记录中不满足相关条件,将会过滤,那么这个时候数组的键值将会发生改变,这个时候就可以用到array_values这个函数:
$result = M("ly_vip")->select();
foreach($result as $k=>$v){
if(!$v['isonly'])continue;
$res[$k] = $v;
}
$res = array_values($res);
二、array_diff()
返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
如 $arr1 = array(1,2,3,4);
$arr2 = array(2,3,9,10);
$diff = array_diff($arr1, $arr2);
那么得知$diff变量的值为array(1,4);
应用场景:前段时间在开发项目时候有个场景用到这个方法,并且感觉不错,拿出来和大家分享分享下:
项目中的详情页有3000多个,每天凌晨的时候用计划任务生成静态页面,这里涉及到有可能有的详情页过期问题,那么就会将昨天的多余的数据删掉,不然用户也能访问不存在的静态页面,这样就会很麻烦,这个时候就可以使用array_diff函数,他能较好的处理这个问题。我们可以将每天生成的静态页面的id记录到一个数组中保持到文件,然后每天生产完静态页面后去和昨天的数组id进行比较 如昨天的是$tmp2 = array(); 今天的是$tmp2 = array() 那么需要删掉昨天的多余的数据可以使用下面的方法:
$diff_tmp = array_diff($tmp2, $tmp1);
foreach($diff_tmp as $k=>$v){
@unlink("./play/".$v.".shtml");即可。
}
三、array_map()
将回调函数作用在给定的回调函数中,这个回调函数作用在数组中的每个单元中,并返回数组,键值保持不变。
返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给
array_map() 函数的数组数目一致。
1、我们先看下在函数中使用array_map(),如下列
$arr = array('s'=>1,'sa'=>2,'tm'=>array(1=>2,4=>9)); function getArr($value){ return is_array($value)?array_map('getArr',$value):$value+1; } $smm = getArr($arr); print_r($smm);
打印的结果如图:
先分析下getArr这个函数,这个函数是作用到数组中的每个单元,将每个单位的数值+1,然后返回,键值保持不变,看打印的结果也可以知道,每个单元元素+1返回了
应用场景:
如我们获取数据库中的数据,需要对每条内容进行处理,比如如果需要对每条记录中的每个单元进行反转义处理,这个时候我们就可以用到array_map这个函数,下面看如下代码:
函数部分
function stripslashes_deep($value){ $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; }
控制器中的类部分
public function getFilm(){ $film = M("Film"); $data = array('status'=>1,'isonly'=>2); $result = $film->where($data)->select(); if($result){ foreach($result as $k=>$v){ $result[$k] = stripslashes_deep($v); } }else{ return FALSE; } return $result; }
以上就列举了一个应用场景,其他都差不多。
2、在类中如何使用
我们看了上述1的列子后,有朋友会问,如果在PHP类中通过array_map函数回调内部方法要如何做呢?,那就没必要将stripslashes_deep函数写到一个函数文件中,能不能写到类中作为一个类中的方法,我们来看下如下类:
class A{ function sn($n){ return $n*$n*$n; } function test(){ $arr = array(1,2,4); $array = array_map(array($this,"sn"), $arr); print_r($array); } } $aa = new A(); $aa->test();看看输出结果:
以上就是array_map函数的两种使用方法,希望大家给出意见,谢谢!
三、array_filter()函数
用回调函数过滤数组中的单元,如果没有回调函数,那么默认就是删除数组中值为false的内容。
使用说明;
array array_filter ( array $input [, callback $callback ] )
实例1:
$array = array(1=>0,2=>34,9=>223,'s'=>null,'sg'=>''); var_dump(array_filter($array));打印结果如图
实例2:带有回调函数
function checkId($id){
return ($id %2 == 1)
}
$ids = array(1,2,4,5,7,8,9);
array_filter($ids,'checkId');
返回结果为:array(1,5,7,9);
注意:array_filter和array_map的区别
A、array_map作用回调函数的时候,函数传递的参数位置不一样,array_map先传递回调函数,后传递数据,而array_filter是先数据后回调函数
B、array_map作用回调函数后,返回的新数组个数保持不变、而array_filter则不是!
其他函数功能陆续添加、请关注PHP 数组处理(二)...................

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

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

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
