PHP:array_get关联数组取值实现类似Python字典默认取值的功能

这篇博客介绍了如何在PHP中模拟实现类似Python字典的get方法,允许设置默认值。文章通过示例代码展示了如何在PHP中定义一个函数array_get来实现这一功能,并在后期补充了当目标值为null时的处理方法,确保能正确获取到null值。此外,还提供了针对null值的改进方案,确保函数在各种情况下都能正确工作。

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

在Python中,字典可以使用get取值, 可以传入第二个参数作为默认值,如果字典中没有这个key对应的值,就会返回默认值

# -*- coding: utf-8 -*-

data = {
    'name': 'Tom',
    'age': 23
}

print(data.get('name'))
# Tom

print(data.get('school'))
# None

print(data.get('school', 'puk'))
# puk

PHP中没有提供类似的功能,我们自己实现一个关联数组取值

<?php

function array_get($array, $key, $default = null)
{
    return isset($array[$key]) ? $array[$key] : $default;
}
$data = [
    'name' => 'Tom',
    'age'  => 23
];

var_dump(array_get($data, 'name'));
// string(3) "Tom"

var_dump(array_get($data, 'school'));
// NULL


var_dump(array_get($data, 'school', 'puk'));
// string(3) "puk"

2022年10月11日补充:

该实现方法有个问题,如果是如下取值方式

$data = [
    'name' => 'Tom',
    'age'  => 23,
    'email'  => null,
];

$value = array_get($data, 'email', '');

var_dump($value);
// string(0) ""

我期待的是取到 null, 不过却取到了给定的默认值空字符

看一下文档原文:https://www.php.net/manual/zh/function.isset.php

isset — 检测变量是否已声明并且其值不为 null

故而,获取不到目标对象的null 值,改进如下

<?php

function array_get($array, $key, $default = null)
{
    if(is_array($array) && array_key_exists($key, $array)){
        return $array[$key];
    } else{
        return $default;
    }
}

测试

$data = [
    'name' => 'Tom',
    'age'  => 23,
    'email'  => null,
];

$value = array_get($data, 'email', '');
var_dump($value);
// NULL

$value = array_get($data, 'name');
var_dump($value);
// string(3) "Tom"

$value = array_get($data, 'sex');
var_dump($value);
// NULL

$value = array_get($data, 'sex', 'man');
var_dump($value);
// string(3) "man"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值