当前位置: 首页 > 知识库问答 >
问题:

php-如何仅返回具有特定键的关联数组项?

龚志
2023-03-14

有一个关联数组

    Array
   (
    [tableData] => Array
        (
            [0] => Array
            (
                [booking_name] => abc/xyz/123
                [user_area] => ls reca
                [release] => oss72
                [start_date] => 2017-06-20 00:00:00
                [end_date] => 2017-06-23 00:00:00
                [asset_info] => Array
                    (
                        [0] => Array
                            (
                                [status] => 10
                                [manufacturer] => HP
                                [model] => HP BL460C GEN8
                                [hardware_color] => #0066b3
                            )

                    )

                [full_name] => Valay Desai
                [email_address] => valay@xyz.com
            )
            ............,
            [500] => Array()
        )
)

我已经使用array_map从另一个对象($filtered_array)获取属性名。

$filteredColumns = array_map(function($item){
        return $item['attribute'];
    }, $filtered_array);

由此我得到了以下输出:

Array
(
    [0] => booking_name
    [5] => asset_info
    [6] => full_name
    [7] => start_date
)

这里的键不按顺序排列。而asset_info是另一个关联数组。

$filteredData = [];

    foreach ($tableData as $key => $row) {
        $filteredData[$key] = array_filter($filteredColumns, function($item) use ($row){
            $intersect = array_intersect_assoc((array)$item, (array)$row);
            return (count($intersect)) === count($row);
        });
    }

但是得到了空数组作为输出。

我如何返回主大关联数组只与键名称我得到它与array_map?如何返回主数组(500项)与项目,只匹配某些键?

共有1个答案

哈襦宗
2023-03-14

我认为没有必要使用数组过滤器。如果翻转$filteredColumns(因此列名是数组键),只需使用array_intersect_key()即可获得所需的键。

$filteredColumns = array_flip($filteredColumns);

foreach ($tableData as $key => $row) {
    $filteredData[$key] = array_intersect_key($row, $filteredColumns);
}

根据$filtered_数组的外观,您可能会使用http://at2.php.net/manual/en/function.array-column.php而不是数组映射

 类似资料:
  • 问题内容: 我想返回数组的奇数,但是Eclipse似乎不接受我的返回码。我认为这需要返回整个数组,因为我将数组设置为方法的参数。如前所述,我需要传递一个数组并获取该数组的特定元素作为回报。即使我将该数组设为静态,如何返回单个元素? 编辑:好吧,这里是: 我知道这里可能存在多个错误,但我正在努力,不仅要返回奇数,还要将它们加在一起。 问题答案: 您的代码应如下所示: 这里的要点是方法返回类型,它应该

  • 问题内容: 我有一个关联数组,但是当我使用以下函数向其添加值时,它似乎会覆盖相同的键。有没有办法让多个相同的键具有不同的值?还是存在具有相同格式的另一种形式的数组? 我希望有: 码: 问题答案: 不可以,关联数组中不能有多个相同的键。 但是,您可以拥有唯一的键,每个键的对应值都是数组,并且这些数组的每个键都有多个元素。 所以代替这个… …你有这个:

  • 这是关联数组: 我知道通过使用过滤数据并比较值的正常方法。我想在中搜索以下键/值对。 理想的输出应该是来自的第一个元素,因为它booking_name=abc,pdg=保证和user_area=es st 我尝试了: 这总是返回空数组。 仅供参考-我是新的。 更新1: 我使用下面的方法来获取具有可见。对所问问题进行了类似的尝试,但未能获得理想的结果。 如何在关联数组上应用作为数组数组传递的多个过滤

  • 本文向大家介绍php array_keys 返回数组的键名,包括了php array_keys 返回数组的键名的使用技巧和注意事项,需要的朋友参考一下 array_keys返回数组中部分的或所有的键名 说明 array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] ) array_keys()

  • 问题内容: 我有一个只能返回的函数,或者它们都是类型。我想将这一事实包括在签名中,因为它们在功能上下文中具有特殊含义。我怎么做? 目前,我用这个 那是正确的吗? 我知道我可以做到 但是正如我所说,我想在签名中表示该函数仅返回那些特定值。 问题答案: mypy能够将检出为无效语句: Python 3.8 多亏了PEP 586 ,将是已经包含默认的Python 3.8模块。

  • 因此,我通过透视表在用户和照片之间建立了许多对许多的关系。我在我的用户模型中使用。然而,这里的问题是,我的照片表中有十几列我不需要(尤其是在json响应期间)。所以一个例子是: 是否可以修改此方法,使model只返回接受的列(例如由数组指定的列)? 注意:我只想在执行时选择特定的列。在执行之类的操作时,是的,我希望所有列都像往常一样。 编辑:我尝试在Laravel Eloquent中使用“with