【问题标题】:From Two Dimensional Array To One Dimensional Array?从二维数组到一维数组?
【发布时间】:2011-07-23 21:58:42
【问题描述】:

嘿, 我正在使用 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?也许使用循环?还是有内置功能?我很困惑。

【问题讨论】:

  • 这就是糟糕的框架重新发明轮子的问题。在 PDO 中你会写 ->fetchAll(PDO::FETCH_COLUMN, 0).
  • @nikic 您说的是 Fuel 还是所有 PHP 框架?如果只是关于燃料......那么它是好的,因为它只是在测试阶段。 )
  • 我说的是任何框架,它不是简单地使用 PDO 提供的精心设计的接口,而是使用 mysqli/mysql 进行一些重新实现。
  • 这与框架无关,这是原生 MySQL 绑定默认返回数据的方式。我们可以很容易地添加一个方法来返回这样的数组,但是对于这个已经存在了几十年的基本数组结构问题,有很多非常简单的解决方案。

标签: php arrays multidimensional-array fuelphp


【解决方案1】:

做一个 foreach 循环来转换它,像这样:

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

【讨论】:

    【解决方案2】:

    是的,foreach 循环应该可以解决问题:

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

    【讨论】:

      【解决方案3】:

      您可以在本机使用 Fuel 执行此操作:

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

      这将完全返回您想要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-23
        • 1970-01-01
        • 2016-12-27
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多