【问题标题】:php - how to return an associative array items with certain keys only?php - 如何仅返回具有某些键的关联数组项?
【发布时间】:2017-11-25 22:22:40
【问题描述】:

有一个关联数组:

    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 个项目)?

【问题讨论】:

  • 我可以知道投反对票的原因吗?
  • 你能举个输入输出的例子吗?

标签: php arrays


【解决方案1】:

我真的认为不需要使用 array_filter。如果您翻转 $filteredColumns (因此列名是数组键),您可以简单地使用 array_intersect_key() 来仅获取所需的键。

$filteredColumns = array_flip($filteredColumns);

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 2022-01-04
  • 2015-07-23
  • 2011-10-05
相关资源
最近更新 更多