博客列表 >数组遍历与数组函数

数组遍历与数组函数

昔年
昔年原创
2020年04月25日 21:39:35628浏览

一、数组遍历

$arr = [
    ['id' => '1020','name'=>'小明','grade' => 68],
    ['id' => '1030','name'=>'小红','grade' => 88],
    ['id' => '1040','name'=>'小张','grade' => 98],
];
foreach($arr as $k => $v){
    echo $k.'<br>';
    foreach($v as $key => $val){
        echo $key.':'.$val.'<br>';
    }
    echo '<hr>';
}

demo1.png

二、数组函数

//1.array_keys()获取所有键名组成的数组

$res = array_keys($arr[0]);
printf('<pre>%s<pre>',print_r($res,true));
echo '<br>';

//2.in_array():判断数组中是否存在某个值

$res = in_array('1030',$arr[2]);
echo $res;
var_dump($res);
echo '<hr>';

demo2.png

//3.array_column():获取多维数组中的一列组成新的数组

$res = array_column($arr,'name');
printf('<pre>%s<pre>',print_r($res,true));
echo '<hr>';

demo5.png

//4.array_merge():将多个数组合并成一个数组

$arr_1 = [
    ['id' => '1060','name'=>'小刘','grade'=>67],
    ['id' => '1070','name'=>'小宋','grade'=>75]
];
$arr_merge = array_merge($arr,$arr_1);
printf('<pre>%s<pre>',print_r($arr_merge,true));
echo '<hr>';

//5.1 implode():将数组元素按照指定字符串拼接成数组

//5.2 explode():将字符串分割为数组

$str_array = ['abc','ertt','wee','gh'];
$str = implode('-',$str_array);
echo $str.'<br>';
$str_array = explode('-',$str);
printf('<pre>%s<pre>',print_r($str_array,true));
echo '<hr>';

demo7.png

//6.range():根据指定范围生产数组,包含指定的元素

$res = range('a','f');
printf('<pre>%s<pre>',print_r($res,true));
echo '<hr>';[object Object]

//7.1 extract():将关联数组拆分成变量名值对

//7.2 compact():将一组变量名值对拼接成一个关联数组键值对

extract($arr[0]);
echo "id:$id&nbsp name:$name &nbsp grade:$grade";
$res = compact('id','name','grade');
printf('<pre>%s<pre>',print_r($res,true));
echo '<hr>';

demo9.png

// 8.1 array_intersect():计算数组的交集

// 8.2 array_intersect_assoc():计算数组的交集,键名也做比较

$grade_1 = ['css' => 72,'java' => 56,'php'=>87,'js'=>67];
$grade_2 = ['html/css' => 72,'java' => 56,'php'=>85,'js'=>67];
printf('<pre>%s<pre>',print_r(array_intersect($grade_1,$grade_2),true));
printf('<pre>%s<pre>',print_r(array_intersect_assoc($grade_1,$grade_2),true));
echo '<hr>';

//9 array_search(查找的值,数组, [, bool $strict = false] )在数组中搜索给定的值,如果成功则返回首个相应的键名, 

$arr = ['dgf','fdfd','AS','were','sddss',''];
$str_1 = 'AS';
$str_2 = null;
echo array_search($str_1,$arr).'<br>';
echo array_search($str_2,$arr).'<br>';
//如果第三个参数为true,则还要判断类型
echo array_search($str_2,$arr,true);
echo '<hr>';

demo10.png

//10 array_pad(array $array, int $size, mixed $value )  以指定长度将一个值填充进数组

$arr = ['dgf','fdfd','AS','were','sddss'];
printf('<pre>%s<pre>',print_r(array_pad($arr,7,'abc'),true));

demo11.png

三、回调函数

//1. array_filter():用回调规律数组中的单元,返回计算结果为true的元素组成的数组

$arr = [156,'php','bac',null,[3,4,5],(new class{}),456,true,'true'];
$res = array_filter($arr,function($items){
    return is_string($items);
});
printf('<pre>%s</pre><hr>',print_r($res,true));

//2. array_map():是为数组中的每个元素应用回调函数进行处理,返回新数据

$arr = [156,'php,aad,fd,dff','bac,rtt',null,[3,4,5],(new class{}),456,true,'true,fggg'];
$res = array_map(function($items){
    switch(gettype($items)){
        case 'int':
           $items += 100;
        case 'string':
            $items = explode(',',$items);
        break;
        case 'array':
            $items = implode('-',$items);
    }
    return $items;
},$arr);
printf('<pre>%s</pre><hr>',print_r($res,true));

// 3. array_reduce():迭代处理数组元素

$arr = [1,2,3,4,5,6,7];
$res = array_reduce($arr,function($sum,$items){
    $sum += $items;
    return $sum;
});
var_dump($res);
echo '<hr>';

//4. array_walk():使用自定义回调对数组中成员逐个处理,返回布尔值

//主要用于数组成员的格式化,不受数组指针影响

$arr = [1,2,3,4,5,6,7];
array_walk($arr,function($val){
    echo ($val+10);
    echo '<br>';
});

demo12.png


demo13.png

三、查询与替换

1.array_slice($arr,$offset,$length,$flag):从数组取出一部分

$stu = ['id'=>1020,'name' => 'Jack','department'=>'产品研发部','level' => 11,'job'=>'PHP开发工程师'];
$res = array_slice($stu,1,2);
printf('<pre>%s</pre><br>',print_r($res,true));
$res = array_slice($stu,-3,2);
printf('<pre>%s</pre><br>',print_r($res,true));
$res = array_slice($stu,2,-1,false);
printf('<pre>%s</pre><br>',print_r($res,true));
$res = array_slice($stu,2,-1,true);
printf('<pre>%s</pre><br>',print_r($res,true));
echo '<hr>';

demo14.png

2.array_splice($arr):删除数组中的一部分

//可以实现对数组的:删除,替换/更新,添加
$arr = [32,45,67,254,35,63,37,93];
//删除元素
// array_splice($arr,起始索引,删除数量),返回的是被删除元素组成的数组
$res_1 = array_splice($arr,3,3);
$res_2 = array_splice($arr,-3,-1);
printf('<pre>%s</pre>',print_r($res_1,true));
printf('<pre>%s</pre>',print_r($res_2,true));
echo '<hr>';
//替换元素
$arr = [32,45,67,254,35,63,37,93];
$res = array_splice($arr,2,2,[56,22]);
printf('<pre>%s</pre>',print_r($arr,true));
printf('<pre>%s</pre>',print_r($res,true));
echo '<hr>';
$arr = [32,45,67,254,35,63,37,93];
//添加元素
$res = array_splice($arr,2,0,[91,34]);
printf('<pre>%s</pre>',print_r($arr,true));
echo '<hr>';

demo15.png



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议