有一种内置的方法可以在PHP中从多维数组中获取数组吗?

时间:2010-02-05 16:08:31

标签: php arrays pdo flatten

(查询数据库时非常有用) 如果我有一个multy dim数组

 [['id'=>1],['id'=>2],['id'=>34],['id'=>67]]

我想要的是[1,2,34,67]

我知道如何在代码中执行此操作,只是询问PHP中是否存在内置方式(或者可能在PDO中)来执行此操作。

4 个答案:

答案 0 :(得分:3)

我认为您需要PDO::FETCH_COLUMN中的fetchAll模式,它只返回一列作为数组:

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the values of the first column */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>

来自the manual

  

要从结果集返回包含单个列的所有值的数组,请指定PDO :: FETCH_COLUMN。您可以使用column-index参数指定所需的列。

答案 1 :(得分:1)

一种非常简单的方法是展平您的多维数组

此代码是从http://php.net/manual/en/function.array-values.php

中提取的
<?php 
  function array_flatten($array, $flat = false) 
  { 
    if (!is_array($array) || empty($array)) return ''; 
    if (empty($flat)) $flat = array(); 

    foreach ($array as $key => $val) { 
      if (is_array($val)) $flat = array_flatten($val, $flat); 
      else $flat[] = $val; 
    } 

    return $flat; 
  } 

  // will get your flattened array
  print_r( array_flatten( $vals ) );
?>

答案 2 :(得分:0)

也许array_values(array_values($array));

答案 3 :(得分:0)

你能不能制作出你想要的阵列?

$old = array( array( 'id'=>1 ), array( 'id'=>2 ), array( 'id'=>34 ), array( 'id'=>67 ) );
$arr = array();
foreach( $old as $item ) {
    $arr[] = $item['id'];
}

//$arr = [ 1, 2, 34, 67 ];