php数组函数

本文详细介绍了PHP中数组的各种操作方法,包括返回数组的所有值、获取键名、交换键值对等基本操作,以及如何通过函数实现数组的过滤、合并、填充等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
//1.array_values()返回数组中所有的值
$array  = array( "size"  =>  "XL" ,  "color"  =>  "gold" );
// echo "<pre>";
// print_r ( array_values ( $array ));
// echo "</pre>";

//2. array_keys()返回数组中所有的键名
$array  = array( 0  =>  100 ,  "color"  =>  "red" );
echo "<pre>";
print_r ( array_keys ( $array ));
echo "</pre>";

$array  = array( "blue" ,  "red" ,  "green" ,  "blue" ,  "blue" );
echo "<pre>";
print_r ( array_keys ( $array ,  "blue" ));
echo "</pre>";

//3.array_flip交换键值对
$trans  = array( "a"  =>  1 ,  "b"  =>  1 ,  "c"  =>  2 );
//$trans  =  array_flip ( $trans );
// print_r ( $trans );
echo "<pre>";
print_r (array_flip ( $trans ));
echo "</pre>";

//4.in_array()检查是不是在数组中
$array = array(1,2,4,5);
//in_array(1,$array);
echo "<pre>";
print_r (in_array(2,$array));
echo "</pre>";

$a  = array( '1.10' ,  '12.4' ,  1.13 );
if ( in_array ( '12.4' ,  $a ,  true )) {
    echo  "'12.4' found with strict check\n" ;
}
if ( in_array ( 1.13 ,  $a ,  true )) {
    echo  "1.13 found with strict check\n" ;
}

//5 .数组中的位置
$transport  = array( 'foot' ,  'bike' ,  'car' ,  'plane' );
$mode  =  current ( $transport ); echo "<pre>"; print_r ($mode);echo "</pre>";
$mode  =  next ( $transport );    echo "<pre>"; print_r ($mode);echo "</pre>"; 
$mode  =  next ( $transport );    echo "<pre>"; print_r ($mode);echo "</pre>"; 
$mode  =  prev ( $transport );    echo "<pre>"; print_r ($mode);echo "</pre>";
$mode  =  reset ( $transport );    echo "<pre>"; print_r ($mode);echo "</pre>";
$mode  =  end ( $transport );    echo "<pre>"; print_r ($mode);echo "</pre>";

//6.compact() 根据变量生成一个关联数组
$firstname = "Peter";
$lastname = "Griffin";
$age = "38";
$array = compact('firstname','lastname','test');
echo "<pre>"; print_r ($array);echo "</pre>";
//得到的数组 :Array ([firstname] => Peter [lastname] => Griffin)

//7.array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。 在返回的数组中,键名保持不变。
$a1=array(0=>"Dog",1=>"Dog",2=>"Horse");
$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
$a3=array(3=>"Horse",4=>"Dog",5=>"Fish");
//print_r(array_diff($a2,$a1));
//得到的数组 Array([5]=>Fish)

//8.array_diff_assoc() 函数返回两个数组的差集数组。键值对都要比较
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(0=>"Rat",1=>"Horse",2=>"Dog");
$a3=array(0=>"Horse",1=>"Dog",2=>"Cat");
//print_r(array_diff_assoc($a1,$a2,$a3));
//该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键和值.和 array_diff() 函数 不同,
//本函数要求键名和键值都进行比较。返回的数组中键名保持不变。

//9.array_fill() 函数用给定的值填充数组
$a = array_fill(2,4,"Dog");
//print_r($a);
//Array ( [2] => Dog [3] => Dog [4] => Dog [5] => Dog )

//10.array_filter() 函数用回调函数过滤数组中的元素,如果自定义过滤函数返回 true,则被操作的数组的当前值就会
//被包含在返回的结果数组中, 并将结果组成一个新的数组。如果原数组是一个关联数组,键名保持不变
function myfunction($test) 
{
if ($test==="Horse")
{
return true;
}
return false;
}
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
//print_r(array_filter($a,"myfunction"));
//Array ( [2] => Horse )

// 11.array_intersect() 函数返回两个或多个数组的交集数组。(保留键名)
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
//print_r(array_intersect($a1,$a2));
//Array ( [1] => Dog [2] => Horse )

// 12.array_keys() 函数返回包含数组中所有键名的一个新数组
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
//$a=array("Horse","Cat","Dog");
print_r(array_keys($a));

//13.array_merge() 函数把两个或多个数组合并为一个数组
//如果仅仅向 array_merge() 函数输入了一个数组,且
//键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
//Array ( [a] => Horse [b] => Cat [c] => Cow )
//例2
$a=array('3'=>"Horse",'4'=>"Dog");
//$a=array('fs'=>"Horse",'dd'=>"Dog");
print_r(array_merge($a));
//Array ( [0] => Horse [1] => Dog)


//14.array_merge_recursive() 函数与 array_merge() 函数 一样,
//将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。
//但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
echo "<pre>";
print_r(array_merge_recursive($a1,$a2));
echo "</pre>";
//结果 :Array ([a] => Horse [b] => Array ( [0] => Dog [1] => Cat ) [c] => Cow )

//15.array_pad()函数向一个数组插入带有指定值的指定数量的元素
//array_fill和array_pad的区别:一个是给制定的值填充数组,另外一个是给一个数组后追加值
$a1 = array("cat");
$array = array_pad($a1,5,'mingquan');
print_r($array);


//16.array_pop() 函数删除数组中的最后一个元素。(出栈)
//array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
//该函数等于多次调用 $array[] = $value。

$array  = array('zhangsan','lisi','liuwu');
array_pop($array);
array_push($array,'wangliu','zhouqi','zhengba');
echo "<pre>";
print_r($array);
echo "</pre>";

//17.array_product() 函数计算数组的乘积
//17.array_sum() 函数计算数组的
$arr  = array('5','4','3','2','1'); //结果是120
$arr  = array('ming','test','3','2','1'); //结果是0
$num = array_product($arr);
//echo $num;


//18.array_rand() 函数从数组中随机选出一个或多个元素,并返回
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//$a=array("Dog","Cat","Horse",'mouse','pig');
print_r(array_rand($a,2));

//19. array_splice() 函数与 array_slice() 函数类似,
// array_splice(array,offset,length,array)
//选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替
//提示:如果函数没有删除任何元素 (length=0),则替代数组将从 start 参数的位置插入。(
$a1=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
$a2=array(0=>"Tiger",1=>"Lion");
array_splice($a1,0,2,$a2);//返回的结果是:array(0=>"Dog",1=>"Cat"); 这2个元素是被切掉的元素
print_r($a1);//返回的结果是:array(0=>"Tiger",1=>"Lion",2=>"Horse",3=>"Bird")


//20.array_slice() 函数在数组中根据条件取出一段值
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,-2,1)); //Array ( [0] => Horse )


//21.array_search() 函数与 in_array() 一样,在数组中查找一个键值。
//如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//echo array_search("Dog",$a); //结果是a


//22.list() 函数用数组中的元素为一组变量赋值。
$arr=array("Dog","Cat","Horse");
$arr=array("Dog","Cat","Horse");
list($a,$b,$c) = $arr;
echo "<pre>";
echo "I have $a,$b,$c.";
echo "</pre>";


//23.shuffle()将数组打乱 
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse",'d'=>"mouse",'f'=>"tiger");
shuffle($a);
echo "<pre>";
print_r($a);
echo "</pre>";


//24.array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值。
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($a);
print_r ($a);
//结果:Dog
//Array ( [b] => Cat [c] => Horse )
?>

//25.array_chunk()将数组进行切割

$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31","David"=>"35");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值