从二维数组到一维数组?

3

嘿,我正在使用FuelPHP并进行如下操作...

$query =
  \DB::select( 'username' )
    ->from( 'users' )
    ->execute()
    ->as_array();

我收到的数组如下所示。
Array
(
  [0] => Array
  (
    [username] => daGrevis
  )

  [1] => Array
  (
    [username] => whatever
  )

  [2] => Array
  (
    [username] => foobar
  )

)

这绝对不是我需要的。以下是我理想的数组示例:
Array
(
  [0] => daGrevis
  [1] => whatever
  [2] => foobar
)

那么我如何获得“理想数组”呢?也许我在查询中做错了什么...如果没有的话...我该如何将数组#1转换为数组#2?使用循环吗?或者有内置函数可以使用?我感到困惑。

1
这就是不好的框架重新发明轮子的问题。在PDO中,您会编写 -> fetchAll(PDO :: FETCH_COLUMN,0) - NikiC
@nikic 你是在谈论Fuel还是所有的PHP框架?如果只是关于Fuel...那么没问题,因为它只是beta版。) - daGrevis
我所说的是任何框架,它不仅使用PDO提供的非常好的设计接口,而且还使用了一些重新实现的mysqli/mysql。 - NikiC
这与框架无关,这是本地MySQL绑定默认返回数据的方式。我们可以轻松地添加一个方法来返回类似的数组,但是有很多非常简单的解决方案来解决这个基本的数组结构问题,这些解决方案已经存在了几十年。 - Phil Sturgeon
3个回答

11

您可以使用Fuel本地实现此操作:

$query = \DB::select( 'username' )
           ->from( 'users' )
           ->execute()
           ->as_array(null, 'username');

这将会返回你想要的精确结果。


4

没错,使用foreach循环就可以解决问题:

$new_array = array();
foreach($query as $result_num => $sub_array)
{
    $new_array[$result_num] = $sub_array[username];
}

2

使用foreach循环进行转换,类似于以下代码:

$arr2 = array();
foreach ($arr1 as &$value) {
array_push($arr2, $value[username]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接