2017-06-22 64 views
-1

有关联数组:PHP的 - 如何返回一个关联数组项只有一定的键?

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] => [email protected] 
      ) 
      ............, 
      [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项)只有与某些键匹配的项目?

+0

我可以知道下投票的原因是什么? – Valay

+0

你能举一个输入和输出的例子吗? – MahdiY

回答

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

+0

你是对的。这工作正常。 – Valay

+0

可以请你帮我出来https://stackoverflow.com/questions/44721195/php-how-can-i-filter-associative-array-of-arrays-with-use-of-an-array-as-康迪 – Valay

相关问题