PHP基础知识6【系统内置函数--数组】

数组的相关处理函数
    一.数组键/值操作有关的函数
        1.array_values()   无论是关联的还是索引的返回的都是索引数组

 1 <?php
 2 $lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php");
 3
 4 $arr=array_values($lamp);
 5
 6 list($os,$wb,$db,$lang)=$arr;
 7
 8 echo $os."<br>";
 9 echo $wb."<br>";
10 echo $db."<br>";
11 echo $lang."<br>";
12
13 echo "<pre>";
14 print_r($arr);
15 echo "<pre>";
16 ?>

2.array_keys(array,value)      返回键名
            array  必需。规定输入的数组。
            value  可选。指定值的索引(键)。

1 <?php
2 $lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php");
3
4 $arr=array_keys($lamp,);
5
6 echo "<pre>";
7 print_r($arr);
8 echo "<pre>";
9 ?>

3.in_array(value,array,type)   函数在数组中搜索给定的值
            value   必需。规定要在数组搜索的值。
            array   必需。规定要搜索的数组。
            type    可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

<?php
$lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php",array("a","b"));

if(in_array(array("a","b"),$lamp)){
    echo "存在!";
}else{
    echo "不存在!";
}
?>

4.array_key_exists(key,array) 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。    
            key    必需。规定键名。
            array  必需。规定输入的数组。

<?php
$lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php",array("a","b"));

if(array_key_exists("os",$lamp)){
    echo "存在!";
}else{
    echo "不存在!";
}
?>

5.array_flip(array) 交换数组中的键和值.  函数返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为它的值,所有其他的键名都将丢失。

<?php
$lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php",10=>"Linux");

$arr=array_flip($lamp);

echo "<pre>";
print_r($arr);
echo "<pre>";
?>

6.array_reverse(array,preserve)  将原数组中的元素顺序翻转,创建新的数组并返回。
             preserve   可选。规定是否保留原始数组的键名。可能的值:true(是) 和 false。

<?php
$lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php");

$arr=array_reverse($lamp);

echo "<pre>";
print_r($arr);
echo "<pre>";
?>

二.统计数组元素的个数和唯一性
        1.count(array,mode)  sizeof(array,mode);   统计数组的长度
            mode   可选。规定函数的模式。可能的值:
                        0 - 默认。不检测多维数组(数组中的数组)。 
                        1 - 检测多维数组。

<?php
$arr=array("id"=>1,"name"=>"zhangsan","age"=>20,"sex"=>"nan",array(1,2,3,4,5,6));

echo "conut()--->".count($arr,1);
echo "<br>";
echo "sizeof()--->".sizeof($arr,1);
?>

2.array_count_values()   用于统计数组中所有值出现的次数。
            本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

<?php
$arr=array("id1"=>1,"id2"=>1,"name"=>"zhangsan","age"=>20,"sex"=>"nan");

$a=array_count_values($arr);

echo "<pre>";
print_r($a);
echo "<pre>";
?>

3.array_unique   删除数组中重复的值,并返回结果数组。被返回的数组将保持第一个数组元素的键类型

<?php
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");

print_r(array_unique($a));
?>

三.使用回调函数处理数组的函数
        1.array_filter(array,function)    用回调函数过滤数组中的元素。如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组。如果原数组是一个关联数组,键名保持不变。
            function   必需。自定义函数的名称。

<?php
$arr=array(1,-2,3,-4,5,-6,7,8,9,10,11,12);

$a=array_filter($arr,"myfun");

function myfun($n){
    if($n>0){
        return true;
    }else{
        return false;
    }
}

echo "<pre>";
print_r($a);
echo "<pre>";
?>

2.array_walk(array,function,userdata...)     对数组中的每个成员应用用户函数。如果成功则返回 TRUE,否则返回 FALSE。
            function   必需。用户自定义函数的名称。
            serdata    可选。用户输入的值,可作为回调函数的参数。

<?php
$lamp=array("os"=>"Linux","wb"=>"Apache","db"=>"MySql","la"=>"php");

array_walk($lamp,"myfun");

function myfun($value,$key){
    echo $key."--->".$value."<br>";
}
?>

3.array_map(function,array1,array2,array3...)   将回调函数作用到给定数组的单元上。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

<?php
$lamp=array("os"=>"Linux","wb"=>"Apache","db"=>"MySql","la"=>"php");

$arr=array_map("myfun",$lamp);

function myfun($n){
    return $n."==";
}
echo "<pre>";
print_r($arr);
echo "<pre>";
?>

四.数组的排序函数
        sort()
        rsort()
        usort()
        asort()
        arsort()
        uasort()
        ksort()
        krsort()
        uksort()
        hatsort()
        natcasesort()
        array_multisort()

1.简单的数组排序
            sort(array,sorttype)   函数按升序对给定数组的值排序。键名改变
                sorttype  可选。规定如何排列数组的值。可能的值:
                    SORT_REGULAR - 默认。以它们原来的类型进行处理(不改变类型)。 
                    SORT_NUMERIC - 把值作为数字来处理 
                    SORT_STRING - 把值作为字符串来处理 
                    SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置*。 
            rsort(array,sorttype)函数对数组逆向排序,键名改变

<?php
$data=array(1,3,2,8,4,7);

sort($data);

echo "<pre>";
print_r($data);
echo "<pre>";

$data1=array("a"=>"cfr","c"=>"brtd","b"=>"adefex");

rsort($data1);

echo "<pre>";
print_r($data1);
echo "<pre>";
?>

2.根据键名对数组排序
            ksort(array,sorttype)函数对数组按照键名排序,为数组值保留原来的键
            krsort(array,sorttype)函数对数组按照键名逆向排序,为数组值保留原来的键

<?php
$arr=array("a"=>"bder","c"=>"adef","b"=>"cderf");

ksort($arr);

echo "<pre>";
print_r($arr);
echo "<pre>";

krsort($arr);

echo "<pre>";
print_r($arr);
echo "<pre>";
?>

3.根据元素的值对数组进行排序
            asort(array,sorttype)函数对数组进行排序并保持索引关系,键名不变
            arsort(array,sorttype)函数对数组进行逆向排序并保持索引关系,键名不变

<?php
$my_array = array("a"=>"Dog","b"=>"Cat","c" =>"Horse");

asort($my_array);
echo "<pre>";
print_r($my_array);
echo "<pre>";

arsort($my_array);
echo "<pre>";
print_r($my_array);
echo "<pre>";
?> 

4.根据“自然数排序”法读数组排序
            natsort(array)函数用“自然排序”算法对数组进行不区分大小写字母的排序。
            natcasesort(array)函数用“自然排序”算法对数组排序。

<?php
$my_array = array("file1.txt","file11.txt","file2.txt","File22.txt");

echo "用sort排序:";
sort($my_array);
echo "<pre>";
print_r($my_array);
echo "<pre>";

echo "用natsort排序:";
natsort($my_array);
echo "<pre>";
print_r($my_array);
echo "<pre>";

echo "用natcasesort排序:";
natcasesort($my_array);
echo "<pre>";
print_r($my_array);
echo "<pre>";
?> 

5.用户自定义规则对数组排序
            usort(array,function)函数使用用户自定义的比较函数对数组中的值进行排序,会删除原来的键名
                function必需。用户自定义的函数。
                        函数必须设计为返回 -1, 0, 或 1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:
                        如果 a = b, 返回 0 
                        如果 a > b, 返回 1 
                        如果 a < b, 返回 -1
            uasort(array,function)函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。
            uksort(array,function)函数使用用户自定义的比较函数对数组中的键名进行排序,,并保持索引关联(不为元素分配新的键)

<?php
$arr=array("Linux","Apache","MySql","Php");

usort($arr,"sortbylen");

//用户自定义按照字符串长度排序函数
function sortbylen($one,$two){
    if(strlen($one)==strlen($two))
        return 0;
    return (strlen($one)>strlen($two))?1:-1;
}

echo "<pre>";
print_r($arr);
echo "<pre>";
?>

6.多维数组的排序
            array_multisort(array1,sorting order,sorting type,array2,array3...)函数对多个数组或多维数组进行排序。
                array1          必需。规定输入的数组。
                sorting order   可选。规定排列顺序。可能的值是 SORT_ASC(默认,按升序排列。(A-Z)) 和 SORT_DESC( 按降序排列。(Z-A) )。
                sorting type    可选。规定排序类型。可能的值是SORT_REGULAR(默认。将每一项按常规顺序排列。)、SORT_NUMERIC(将每一项按数字顺序排列。)和SORT_STRING( 将每一项按字母顺序排列。)。
                array2          可选。规定输入的数组。
                array3          可选。规定输入的数组。

<?php
$a1=array("Aog","Dog","Cat");
$a2=array("Pluto","Fido","Missy");

array_multisort($a1,$a2);

print_r($a1);
print_r($a2);
?>

五.数组的拆分、合并、分解、接合的函数
        1.array_slice(array,offset,length,preserve)在数组中根据条件取出一段值,并返回。
              offset     必需。数值。规定取出元素的开始位置。
                         如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。
              length     可选。数值。规定被返回数组的长度。
                         如果是负数,则从后向前,选取该值绝对值数目的元素。如果未设置该值,则返回所有元素。
              preserve   可选。可能的值:
                              true - 保留键 
                              false - 默认 - 重置键

<?php
$arr=array("a","b","c","d");

print_r(array_slice($arr,1,2));
echo "<br>";
print_r(array_slice($arr,-2,1));
echo "<br>";
print_r(array_slice($arr,1,2,true));
echo "<br>";
?>

2.array_splice()
        3.array_combine(array1,array2)通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。
            array1    必需。规定键名。
            array2      必需。规定值
            注意:两个参数必须有相同数目的元素。

<?php
$a=array(1,2,3,4);
$b=array("a","b","c","d");

echo "<pre>";
print_r(array_combine($a,$b));
echo "<pre>";
?>

4.array_merge(array1,array2,array3...)把一个或多个数组合并为一个数组。
                        如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
?>

5.array_intersect(array1,array2,array3...)计算数组的交集。结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变。

<?php
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
print_r(array_intersect($a1,$a2));
?>

6.array_diff(array1,array2,array3...)返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。
            注意:都是与第一个数组进行比较

<?php
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
print_r(array_diff($a1,$a2));
?>

六.数组与数据结构的函数
        1.使用数组实现堆栈
            (1).array_push(array,value1,value2...)将一个或多个单元(元素)压入数组的末尾(入栈),然后返回新数组的长度。
                注释:即使数组中有字符串键名,您添加的元素也始终是数字键。(参见例子 2)
                注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。 
                注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。 
            (2).array_pop(array)将数组最后一个单元弹出(出栈)。函数删除数组中的最后一个元素。返回弹出的值

<?php
$a=array(0=>"Cat",1=>"Dog",2=>"Horse");

array_push($a,"one","two");
print_r($a);
echo "<br>";

$value=array_pop($a);
echo $value."<br>";
print_r($a);
echo "<br>";
?>

2.使用队列
            (1).array_unshift(array,value1,value2,value3...) 函数在数组开头插入一个或多个元素。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素的个数。
                注释:所有的数值键名将修改为从零开始重新计数,所有的字符串键名保持不变
            (2).array_shift(array)函数删除数组中的第一个元素,并返回被删除元素的值。
                注释:如果键是数字的,所有元素都将获得新的键,从 0 开始,并以 1 递增

<?php
$a=array("a","b","c","d");

//在数组头加入数据
array_unshift($a,"one","two");
print_r($a);
echo "<br>";

//删除数组头的数据
$value=array_shift($a);
echo $value."<br>";
print_r($a);
echo "<br>";

//从数组的任一一个地方删除数据
unset($a[1]);
print_r($a);
?>

七.其他与数据操作有关的函数
        1.array_rand(array,number)从数组中随机选出一个或多个元素,并返回。
            number   可选。默认是 1。规定返回多少个随机的元素。
        2.shuffle(array)把数组中的元素按随机顺序重新排列。
            注释:本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
        3.array_sum(array)计算数组中所有值的和。将字符串转化成数字

<?php
$a=array(1,3,58,69,75,18,59,423);

print_r($a);
echo "<br>";

echo $a[array_rand($a)]."<br>";

shuffle($a);
print_r($a);
echo "<br>";

echo "sum=".array_sum($a);
?>

4.range(first,second,step)建立一个包含指定范围的元素的数组。
            first       必需。规定数组元素的最小值。
            second      必需。规定数组元素的最大值。
            step        可选。规定元素之间的步进制。默认是 1。

<?php
$arr=range(0,50,10);

print_r($arr);
echo "<br>";

$arr1=range("a","k");

print_r($arr1);
?>

原文地址:https://www.cnblogs.com/lxj0205/p/9481859.html

时间: 2024-11-10 14:27:18

PHP基础知识6【系统内置函数--数组】的相关文章

[python基础知识]python内置函数map/reduce/filter

python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法)来迭代遍历每个序列中的元素. 返回bool_func结果为true的元素的序列(注意弄清楚序列是什么意思)http://blog.csdn.net/bolike/article/details/19997465序列参考</a> 如果filter参数值为None,list参数中所有为假的元 素都将被

python基础9 -----python内置函数

python内置函数1 一.python内所有的内置函数: 二.python内常用的内置函数: 三.python内内置函数详解: 1.数学运算函数: 2.集合类函数: 3.逻辑类函数: 4.映射类函数: 5.IO操作:

python基础—lambda、内置函数、三元函数(深入学习)

一. 三元运算 例: 二. Lamdba表达式 例: 三. 内置函数 1. 高级函数: 1)Map(函数名,参数):使用函数遍历参数,并显示每个参数的结果 2)Reduce(函数名,参数):使用函数依次遍历参数,但至少两个参数 3)Filter(函数名,参数):调用函数,遍历参数,只有返回True的结果 4)Zip(序列A,序列B*****):接收多个序列化类型的数据,对各序列化数据中的元素, 按索引位置分类成一个个元组,元组的个数以元素最少的序列为准,以列表的方式显示. 2. 其他函数

python基础9 -----python内置函数2

一.python内置所以函数     Built-in Functions     abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile() issubclass() print() super() bin() file() iter() property() tuple

JavaScript基础知识(对象、函数与对象)

17.对象 属性:描述对象的信息  方法:描述对象的行为  封装:只关心输入和输出(不管过程如何实现) ü 对象的分类: 内置对象(原生对象): 就是JavaScript语言预定义的对象(如String/Number). 宿主对象: 一般由浏览器环境提供实现,主要分为 BOM 和 DOM. 自定义对象: 就是由开发人员自主创建的对象. ü 对象的创建: ? 初始化器方式 var 对象名 = {         属性名 : 属性值 ,         方法名 : function( ){方法体} 

Javascript基础知识盲点总结——数据类型和数组

一.javascript总的基本类型 1.javascript中的基本类型共有五种:数字.字符串.布尔值.undefined.null 其中null和undefined最大的区别在于,被赋予null的变量通常被认为是已经定义了的. 2.除了以上五种基本类型外,其他的数据类型都属于对象. 二.利用typeof方法查看数据类型 在javascript中可以通过typeof方法来查看某个变量或值得数据类型.该方法会返回一个代表数据类型的字符串,可能返回的值包括:number,string, boole

平台基础环境的内置函数介绍

转换为字符串:CStr(参数1)参数1:任意类型.返回值类型:字符串类型.作用及说明:把任意类型转换为字符串类型. 转换为整数:CInt(参数1)参数1:任意类型.返回值类型:整数类型.作用及说明:把任意类型转换为整数类型(int). 转换为数字:CDbl(参数1)参数1:任意类型.返回值类型:数字类型.作用及说明:把任意类型转换为数字类型(Double). 转换为长整型:CLng(参数1)参数1:任意类型.返回值类型:长整型类型.作用及说明:把任意类型转换为数字类型(long). 转换为大写字

Python基础知识(2)——函数

Python函数 全球变量 < 局部变量 传参方法: 位置传参 和 关键字传参(常用关键字传参) 函数里定义参数默认值需放在最后 错误的 Def func_name(arg=100,arg1,arg2,arg,3): 正确的 Def func_name(arg1,arg2,arg,3,arg=100): 可变位置函数(所谓的可变是指传参数量可变)Def func_name(*arg):    打包-->元组可变关键字函数    Dfe func_name(**kwarg):    打包--&g

c 变量的存储类型auto等(基础知识)和c函数变量

总结 1).在c语言中每一个变量和函数有两个属性:数据类型和数据的存储类别. 2). 对数据型(如整型.字符型等).存储类别指的是数据在内存中存储的方式. 存储方式分为两大类: 静态存储类和动态存储类 具体包括四种:{自动的(auto), 静态的(static), 寄存器(register), 外部的(extern)}. 根据变量的存储类别, 可以知道变量的作用域和生存期. 例如: 局部变量: 自动变量: int main(void){int a, b, c; 自动变量} 静态局部变量: int