찾다
php教程php手册PHP 数组处理(一)

PHP 数组处理(一)

Jun 06, 2016 pm 08:01 PM
php다루다주인정렬숙련된

导语: 在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);

打印的结果如图:

PHP 数组处理(一)

先分析下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();
看看输出结果:

PHP 数组处理(一)

以上就是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));
打印结果如图

PHP 数组处理(一)


实例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 数组处理(二)...................

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

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

SublimeText3 영어 버전

SublimeText3 영어 버전

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

DVWA

DVWA

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

mPDF

mPDF

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