You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP自动提取数组/对象中的email与username字段

如何自动过滤数组/对象,仅提取指定字段?

刚好遇到过类似的场景,不用一个个unset那么麻烦,我们可以写一个通用的处理函数,只指定要保留的字段,自动过滤掉其他内容,还能兼容数组和对象两种数据类型,完美匹配你的需求。

实现思路:

  • 先明确要保留的字段列表(比如这里的email和username)
  • 遍历原始数据的每一项,对数组和对象类型做兼容处理
  • 只提取目标字段,构建新的结果数组

完整代码示例:

// 定义需要保留的字段
$requiredFields = ['email', 'username'];

// 你的原始数据(假设已解析为PHP变量)
$sourceData = [
    [
        'user_id' => 65751,
        'social_id' => '',
        'parent_id' => '',
        'org_id' => 1,
        'type' => 3,
        's_id' => 1,
        'role_id' => 0,
        'active' => 1,
        'name' => 'RX',
        'first_name' => 'JJ',
        'last_name' => 'DKL',
        'email' => 'first@testmail.com',
        'secondary_email' => '',
        'username' => 'cLvcyUr2'
    ],
    (object) [
        'user_id' => 82197,
        'social_id' => '',
        'parent_id' => '',
        'org_id' => 1,
        'type' => 2,
        's_id' => 1,
        'role_id' => 0,
        'active' => 1,
        'name' => 'sec',
        'first_name' => 'XX',
        'last_name' => 'J3',
        'email' => 'first@testmail.com',
        'secondary_email' => '',
        'username' => 'VfTqXyvJ'
    ]
];

// 通用提取函数
function extractTargetFields($data, $targetFields) {
    return array_map(function($item) use ($targetFields) {
        $filteredItem = [];
        foreach ($targetFields as $field) {
            // 兼容数组和对象,同时处理字段不存在的情况避免报错
            if (is_array($item) && isset($item[$field])) {
                $filteredItem[$field] = $item[$field];
            } elseif (is_object($item) && property_exists($item, $field)) {
                $filteredItem[$field] = $item->$field;
            }
        }
        return $filteredItem;
    }, $data);
}

// 执行过滤
$finalResult = extractTargetFields($sourceData, $requiredFields);

// 输出结果
print_r($finalResult);

输出结果:

Array (
    [0] => Array (
        [email] => first@testmail.com
        [username] => cLvcyUr2
    )
    [1] => Array (
        [email] => first@testmail.com
        [username] => VfTqXyvJ
    )
)

这个方法的优势很明显:扩展性极强,以后要提取其他字段,只需要修改$requiredFields数组就行;同时加了字段存在性判断,避免因字段缺失导致的报错,逻辑更健壮。

内容的提问来源于stack exchange,提问作者Raku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:36:54