【发布时间】:2011-01-13 14:09:59
【问题描述】:
(查询数据库时非常有用)。
如果我有一个多暗数组
[['id'=>1],['id'=>2],['id'=>34],['id'=>67]]
而我想要的是[1,2,34,67]
我知道如何在代码中执行此操作,只是询问 PHP(或可能在 PDO 中)是否有内置方式来执行此操作。
【问题讨论】:
(查询数据库时非常有用)。
如果我有一个多暗数组
[['id'=>1],['id'=>2],['id'=>34],['id'=>67]]
而我想要的是[1,2,34,67]
我知道如何在代码中执行此操作,只是询问 PHP(或可能在 PDO 中)是否有内置方式来执行此操作。
【问题讨论】:
我认为你需要fetchAll 中的PDO::FETCH_COLUMN 模式,它只返回一列作为数组:
<?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 参数指定您想要的列。
【讨论】:
一个非常简单的方法是展平你的多维数组
此代码提取自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 ) );
?>
【讨论】:
也许array_values(array_values($array));
【讨论】:
你能不能只做你想要的数组?
$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 ];
【讨论】:
[ 和] 设置数组
$arr[] = $item['id'] .. :)