通过subitems键转换数组的优雅方式

Joh*_*ith 0 php arrays

我有这个数组:

array (size=3)
  0 => 
    array (size=2)
      'name' => string 'XML' (length=3)
      'processer' => string 'XMLp' (length=12)
  1 => 
    array (size=2)
      'name' => string 'XML2' (length=3)
      'processer' => string 'XML2pr' (length=12)
  2 => 
    array (size=2)
      'name' => string 'CSV' (length=3)
      'processer' => string 'CSVp' (length=12)
Run Code Online (Sandbox Code Playgroud)

由于我不需要所有这些,我不是这个数组转换:

$a = array ('XML', 'XML2', 'CSV');
Run Code Online (Sandbox Code Playgroud)

所以得到'名字'.如何在PHP中优雅地做到这一点?

Dez*_*igo 5

$source = array( 
    0 => array ( 
        'name' =>'A',
        'processer' => 'XMLf'),
    1 => array (
            'name' =>'B',
            'processer' => 'XMLp'),
    2 => array (
            'name' =>'C',
            'processer' => 'XMLp')
);

$output = array_map(function ($value) {
    return $value['name'];
}, $source);

print_r($output);
Run Code Online (Sandbox Code Playgroud)

  • 那不是"显着慢".您的基准测试是错误的,因为您没有为每个方法多次测试,您只能按照定义的顺序测试它们,并且数组是小的,因为它可以产生差异.如果切换测试顺序怎么办?我第一次切换顺序时得到了相反的结果,暗示了第二次数组可能在CPU缓存中的事实.因为基准测试是错误的,所以它的结果毫无意义.另外,你真的需要这种微优化吗? (3认同)
  • 更快或更慢这是另一个问题:) (2认同)
  • @Rinzler:这是一个匿名函数,看看这个:http://nl3.php.net/manual/en/function.array-map.php#96564 (2认同)
  • @Jeroen:优雅和快速根本不是一回事. (2认同)