代码之家  ›  专栏  ›  技术社区  ›  smoove

从数组中提取值的优雅方法

  •  2
  • smoove  · 技术社区  · 16 年前

    长时间困扰我的事情:

    我要转换此数组:

    // $article['Tags']
    array(3) {
      [0] => array(2) {
        ["id"] => string(4) "1"
        ["tag"] => string(5) "tag1"
      },
      [1] => array(2) {
        ["id"] => string(4) "2"
        ["tag"] => string(5) "tag2"
      },
      [2] => array(2) {
        ["id"] => string(4) "3"
        ["tag"] => string(5) "tag3"
      },    
    }
    

    这种形式:

    // $extractedTags[]
    array(3) {
      [0] => string(4) "tag1",
      [1] => string(4) "tag2",
      [2] => string(4) "tag3",
    }
    

    当前我正在使用此代码:

    $extractedTags = array();
    
    foreach ($article['Tags'] as $tags) {
        $extractedTags[] = $tags['tag'];
    }
    

    有没有更优雅的方法,也许是一个PHP内置函数?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Alexander Konstantinov    16 年前

    你可以使用 array_map 具有 anonymous functions :

    // PHP 5.2
    $extractedTags = array_map(create_function('$a', 'return $a["tag"];'), $article['Tags']);
    
    // PHP 5.3
    $extractedTags = array_map(function($a) { return $a['tag']; }, $article['Tags']);
    
    推荐文章