4. PHP 数组操作

发布于 2024-06-01 03:48:31 字数 4233 浏览 19 评论 0

1.4.1. 向二位数组中添加键值对

// 方法一
$tempArr=array();
foreach($arr as $key => $value){
    $value['new_key'] = $value['old_key1']+$value['old_key2'];
    $tempArr[] = $value;
}
// 方法二
foreach($arr as $key => $value){
    $arr[$key]['new_key'] = $value['old_key1']+$value['old_key2'];
}

1.4.2. 判断二维数组是否为空

// 判断一维数组是否为空
echo empty($array_test); //如果数组$array_test 为空那么这个函数返回 true
if($array_test){}; //如果数组为空.那么 if 的条件判断为 false
echo count($array_test) //计算数组元素个数.为 0 就是空
echo sizeof($array_test) //count() 的别名 用法和返回一样

// 判断二维数组是否为空
function array_is_null($arr = null){
    if(is_array($arr)){
    foreach($arr as $k=>$v){
        if($v&&!is_array($v)){
        return false;
        }
        $t = self::array_is_null($v);
        if(!$t){
        return false;
        }
    }
    return true;
    }elseif(!$arr){
    return true;
    }else{
    return false;
    }
}

1.4.3. 求数组中各个元素之和

// 用 foreach 实现
$sum = 0;
foreach ($ar as $v) {
    $sum+=$v;
}
echo $sum;

// 用 array_reduce 实现
$result = array_reduce($arr, function leijia($a,$b){
    $a+=$b;
    return $a;
    });
echo $result;

// 将数组$arr 的首个元素弹出,作为初始值,避免 min($result['min'], $item['min']) 中$result 为空。否则最终结果 min 是空的。
$arr = array( 
    array('min' => 1.5456, 'max' => 2.28548, 'volume' => 23.152), 
    array('min' => 1.5457, 'max' => 2.28549, 'volume' => 23.152), 
    array('min' => 1.5458, 'max' => 2.28550, 'volume' => 23.152), 
    array('min' => 1.5459, 'max' => 2.28551, 'volume' => 23.152), 
    array('min' => 1.5460, 'max' => 2.28552, 'volume' => 23.152), 
); 

$initial = array_shift($arr); 

$t = array_reduce($arr, function($result, $item) { 
    $result['min'] = min($result['min'], $item['min']); 
    $result['max'] = max($result['max'], $item['max']); 
    $result['volume'] += $item['volume']; 

    return $result; 
}, $initial);

1.4.4. 取出两个数组中相同的内容

$arr1=array("0"=>"17","1"=>"20","2"=>"36","3"=>"48");
$arr2=array("0"=>"17","1"=>"36","3"=>"57");
$arr3=array_intersect($arr1,$arr2);
var_dump(array_unique($arr3));

1.4.5. 从数组中找到指定元素的位置

$array=array(2,3,4,1,5);
//找到 3 所处的位置
$find=3;

//第一种方式 循环解决 此举类似于 for while 等循环
function find_by_foreach($array,$find)
{
    foreach ($array as $key => $v)
    {
    if($v==$find)
    {
        return $key;
    }
    }
}
//第二种方式 利用数组查找 找到所需要元素的索引位置
function find_by_array_search($array,$find)
{
    return array_search($find,$array);
}

//第三种方式 键值反转 通过值查找键
function find_by_array_flip($array,$find)
{
    $array=array_flip($array);
    return $array[$find];
}

var_dump(find_by_foreach($array,$find));
var_dump(find_by_array_search($array,$find));
var_dump(find_by_array_flip($array,$find));

1.4.6. 删除数组中指定值的元素的几种方法

// 1. 利用 foreach 和 unset() 函数删除数组中的特定元素
foreach($array as $k=>$v){
    if($v == 'day'){
    unset($array[$k]):
    }
}

// 2. 利用 array_flip() 函数和 unset() 函数删除数组中的特定值
$arr = array_flip($arr);
unset($arr['world']);

// 3. 利用 array_search() 和 unset() 函数删除数组中的特定值
if(($key = array_search('day',$arr))){
    unset($arr[$key]);
}

// 4. array_splice() 函数可以与 unset() 函数起到相同作用
if(($key = array_search('day',$arr))){
    array_splice($arr, $key,1);
}

1.4.7. 根据某一个键值合并生成一个新的二维数组

$result= array();
foreach ($infos as $key => $info) {
    $result[$info['a']][] = $info;
}
print_r($result);

1.4.8. 无限级树

/**
 * 生成无限级树算法
 * @param  array  $arr                输入数组
 * @param  number $pid                根级的 pid
 * @param  string $column_name        列名,id|pid 父 id 的名字|children 子数组的键名
 * @return array  $ret
 */
function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') {
    list($idname, $pidname, $cldname) = explode('|', $column_name);
    $ret = array();
    foreach ($arr as $k => $v) {
    if ($v[$pidname] == $pid) {
        $tmp = $arr[$k];
        unset($arr[$k]);
        $tmp[$cldname] = make_tree($arr, $v[$idname], $column_name);
        $ret[] = $tmp;
    }
    }
    return $ret;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

幸福还没到

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文