PHP | 数组函数详解+实例

一、数组的键值操作函数

• array_values(); //获取数组中的值
• array_keys();  //获取数组中的键
• in_array();  //检查一个值是否在数组中
• array_key_exists();  //检查一个键是否在数组中
• array_flip();  //键和值对调
• array_reverse();  //数组中的值反转
<?php 
$arr=array(
    'name' => 'zyd',
    'age' => '19',
    'sex' => 'female',
    );
print_r(array_values($arr));//Array ( [0] => zyd [1] => 19 [2] => female )
print_r(array_keys($arr));//Array ( [0] => name [1] => age [2] => sex )
var_dump(in_array(3, $arr));//boolean false
var_dump(in_array('19', $arr));//boolean true
var_dump(array_key_exists(2, $arr));//boolean false
var_dump(array_key_exists('age', $arr));//boolean true
print_r(array_flip($arr));//Array ( [zyd] => name [19] => age [female] => sex )
print_r(array_reverse($arr));//Array ( [sex] => female [age] => 19 [name] => zyd )

 ?>

二、统计数组的元素和唯一性

• count();  //统计数组的个数
• array_count_values();  //统计数组中值出现的次数 
• array_unique();  //删除数组中重复值
<?php 
$arr=array(1,2,6,4,3,1,0,1,3,2);

print_r(count($arr));//10
print_r(array_count_values($arr));//Array ( [1] => 3 [2] => 2 [6] => 1 [4] => 1 [3] => 2 [0] => 1 )
print_r(array_unique($arr));// Array ( [0] => 1 [1] => 2 [2] => 6 [3] => 4 [4] => 3 [6] => 0 )

 ?>

三、使用回调函数处理数组的函数

• array_filter();  //将数组值为假的过滤
• array_map();  //将回调函数作用到给定数组的单元上 
<?php 

$arr = array(0,1,2,3,4);

function even($val){
    return $val%2==0;
}

print_r(array_filter($arr));//Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 )过滤值为假元素
print_r(array_filter($arr,'even'));//Array ( [0] => 0 [2] => 2 [4] => 4 )过滤掉奇数元素

 ?>
-----------------------------------------------------------------------------------------

<?php 

$arr = array(0,1,2,3,4);

$arr2 = array_map('cube', $arr);//将函数的作用映射到数组中生成新数组

function cube($val){
    return $val*$val*$val;
}

print_r($arr2);//Array ( [0] => 0 [1] => 1 [2] => 8 [3] => 27 [4] => 64 )

 ?>

用引用实现原数组元素的各自累加

<?php 

$arr = array(0,1,2,3,4);

foreach ($arr as &$value) {
    $value++; 
}

print_r($arr);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

 ?>

四、数组的排序函数(都会改变原数组)

• sort();  //按值把数组值进行排序,升序,不保留key
• rsort();  //按值把数组值进行排序,降序,不保留key
• asort();  //按值把数组值进行排序,升序,保留key
• arsort();  //按值把数组值进行排序,降序,保留key
• ksort();  //按键把数组值进行排序,升序,保留key
• krsort();  //按键把数组值进行排序,降序,保留key
• natsort();  //字符串排序按自然数排序,每个从左往右按位依次比较排序
• natcasesort();  //忽略大小写的自然数排序
• array_multisort();  //用一个数组对另外一个数组进行排序
<?php 
$arr = array(
    'admin1'=>5,
    'admin2'=>2,
    'admin3'=>4,
    'admin4'=>3,
    'admin5'=>1,
    );
asort($arr);

print_r($arr);
//Array ( [admin5] => 1 [admin2] => 2 [admin4] => 3 [admin3] => 4 [admin1] => 5 )
 ?>
---------------------------------------------------------------------------------
<?php 
$arr = array(
    5=>'admin1',
    2=>'admin2',
    4=>'admin3',
    1=>'admin4',
    3=>'admin5'
    );
ksort($arr);

print_r($arr);
//Array ( [1] => admin4 [2] => admin2 [3] => admin5 [4] => admin3 [5] => admin1 )
 ?>
---------------------------------------------------------------------------------
<?php 
$arr = array(
    5=>'admin5',
    2=>'admin2',
    4=>'admin4',
    6=>'admin6',
    1=>'admin100'
    );
natsort($arr);

print_r($arr);
//Array ( [2] => admin2 [4] => admin4 [5] => admin5 [6] => admin6 [1] => admin100 )
 ?>
------------------------------------------------------------------------------------
<?php 
$arr=array(
    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',    
    'bbbbbbb',
    'c',
    'dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'
);

foreach($arr as $val){
    $arr2[]=strlen($val);//将数组元素的长度作为元素组成一个新的数组
}

array_multisort($arr2,SORT_DESC,$arr);//DESC降序,ASC升序

echo "<pre>";
print_r($arr);
echo "</pre>";
/*Array
(
    [0] => dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
    [1] => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    [2] => bbbbbbb
    [3] => c
)*/
?>

 五、拆分、合并、分解与结合函数

• array_slice($arr,a,b);  //截取一段值,从a开始截取b个元素
• array_splice();  //截取一段值,保留一段值作为原数组元素,原数组被改变
• array_combine();  //合并,一个是key,一个是value
• array_merge();   //并集,合并,键值相同,后面覆盖前面
• implode();  //把数组连接成字符串       
• explode();  //把字符串分解成数组
<?php 
$arr=array(1,2,4,3,5);
$arr2=array_slice($arr, 0,3);
$arr3=array_splice($arr,2, 4);
print_r($arr2);//Array ( [0] => 1 [1] => 2 [2] => 4 )
print_r($arr3);//Array ( [0] => 4 [1] => 3 [2] => 5 )
print_r($arr);//Array ( [0] => 1 [1] => 2 )
 ?>
---------------------------------------------------------------------------------
<?php 
$arr1=array('name','age','sex');
$arr2=array('zyd','19','female');

$arr3=array_combine($arr1, $arr2);
$arr4=array_merge($arr1, $arr2);
print_r($arr3);//Array ( [name] => zyd [age] => 19 [sex] => female )
print_r($arr4);//Array ( [0] => name [1] => age [2] => sex [3] => zyd [4] => 19 [5] => female )
 ?>
----------------------------------------------------------------------------------
<?php 
$arr1=array(1,2,3);
$str1=implode($arr1, '-');
echo $str1;//1-2-3

$str2='2020-09-17';
$arr2=explode('-', $str2);
print_r($arr2);//Array ( [0] => 2020 [1] => 09 [2] => 17 )

 ?>

 六、数组与数据结构

• array_pop();  //从最后弹出一个值,返回弹出值,改变原数组
• array_push();  //从最后压入一个值,返回数组个数,改变原数组
• array_shift();  //从前面弹出一个值,返回移出值,原数组下标重排
• array_unshift();  //从前面插入一个值,返回数组个数
<?php 

$arr1=array(1,2,3,4);

echo array_pop($arr1);//4
print_r($arr1);//Array ( [0] => 1 [1] => 2 [2] => 3 )

$arr2=array(0,2,4,6);
echo array_push($arr2, 8);//5
print_r($arr2);//Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 )

echo array_shift($arr1);//1
print_r($arr1);//Array ( [0] => 2 [1] => 3 )

echo array_unshift($arr2, 9);//6
print_r($arr2);//Array ( [0] => 9 [1] => 0 [2] => 2 [3] => 4 [4] => 6 [5] => 8 )
 ?>

七、其他有用的数组处理函数

• shuffle();  //打乱数组
• array_sum();  //数组所有值的和
• array_product();  //数组所有值的乘积
• range();  //获取一个范围内数组
<?php 
$arr=array(1,3,2,5,6);
shuffle($arr);
print_r($arr);//Array ( [0] => 3 [1] => 5 [2] => 1 [3] => 2 [4] => 6 )随机,每次刷新顺序不同

echo array_sum($arr);//17
echo array_product($arr);//180

 ?>
----------------------------------------------------------------------------------------
<?php 
$arr=range(1,10);

echo "<pre>";
print_r($arr);
echo "</pre>";
/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
)*/
 ?>

删除变量或数组中某个元素:

<?php 
$arr=array(1,2,3,4);
unset($arr);
$str="abc";
echo $str; //abc
unset($str);

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

猜你喜欢

转载自blog.csdn.net/weixin_47982238/article/details/108642143