PHP - 过滤数组以从子数组中删除具有不相似键的值

标签 php arrays associative-array

我有一个如下所示的数组。这是来自一个集中式数据库,我无法事先知道实际数组将包含什么。我想比较键上的子数组,这就是为什么要删除不存在的键是所有子数组。

Array (
    [0] => Array
        (
            [a] => 
            [b] => 8
            [c] => 1
            [d] => taille-8
            [e] => 
            [k] => taill
        )

    [1] => Array
        (
            [a] => 
            [b] => 7
            [c] => 2
            [d] => taille-7
            [f] =>
            [k] => tafefef
        )

    [2] => Array
        (
            [a] => ce
            [b] => 34
            [c] => 2
            [d] => taille-34
            [g] => dee
            [k] => tacefef
        ) );

我想删除所有子数组中不重复的键。在上面的示例中,它们是“e”、“f”和“g”。这需要动态发生。

Array (
    [0] => Array
        (
            [a] => 
            [b] => 8
            [c] => 1
            [d] => taille-8
            [k] => taill
        )

    [1] => Array
        (
            [a] => 
            [b] => 7
            [c] => 2
            [d] => taille-7
            [k] => tafefef
        )

    [2] => Array
        (
            [a] => ce
            [b] => 34
            [c] => 2
            [d] => taille-34
            [k] => tacefef            
        ) );

任何建议表示赞赏。

最佳答案

您可以使用参数解包。如果您的数组存储在 $a 中,那么以下应该有效:

// create an array with only the keys that are common to all subarrays
$new = array_intersect_key(...$a);

// prune original array
foreach ($a as &$arr) {
    $arr = array_intersect_key($new, $arr);
}

关于PHP - 过滤数组以从子数组中删除具有不相似键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998070/

相关文章:

java - 使用 toString() 返回数组

php - Laravel Eloquent 更新受影响的行数始终为 1

php - Android 应用程序不发送图片到数据库 PHP MYSQL

java - 你能帮我找出这段代码中的错误吗?我似乎不明白为什么它不起作用?

jquery - 通过 Ajax 传递关联数组

php - JSON 到 PHP 关联数组

php - 如何将数组添加到 url 或发送 post 数组?

php - 我应该在哪里获取 jet_browse_node_id 以用于 jet.com 市场文件上传 API 的以下 JSON 请求?

php - 重命名该关联数组数组的键的快速方法

javascript - 通过 $.ajax 和 $.get/$.post 填充关联数组的差异