<?php$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);$arrField = array_map(create_function('$n', 'return $n["volume"];'), $data); print_r($arrField);exit();?>

解决方案 »

  1.   

    楼主的 create_function 会比直接 function funname 高效??
      

  2.   

    正则【规则只对例子有效】,效率上应该差一点
    preg_match_all('#i:(\d+);s#', serialize($data), $m);
    print_r($m[1]);
      

  3.   

    $begin = microtime('true');
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);foreach($data as $d){
    $arrField[] = $d['volume'];
    }
    echo 'foreach方法耗时:',microtime(true) - $begin;echo '<br />';
    //print_r($arrField);
    $begin = microtime('true');
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);$arrField = array_map(create_function('$n', 'return $n["volume"];'), $data);  echo '其他方法耗时:',microtime(true) - $begin;echo '<br />';
    //print_r($arrField);
    结果:
    foreach方法耗时:0.00011992454528809
       其他方法耗时:0.0013871192932129
    楼主你这样还不如直接foreach再装入新数组效率高
      

  4.   

    简单的测试来看,foreach是最快的,同时使用匿名函数不显示定义要慢。不过还有没有什么比foreach快但更简洁的算法吗?