【问题标题】:Reducing multidimensional array to linear将多维数组简化为线性
【发布时间】:2014-03-17 11:56:29
【问题描述】:

我问过一个类似的问题,但没有人回答。我猜是因为太长了,我无法完全说明或向公众说明。无论如何,有没有办法减少这样的数组

Array( [0]=>Array( [id]=>name ) [1]=>Array( [id]=>name ) )

以上数值来自。

$query=$this->db
            ->select('id,name')
            ->from('employees')
            ->get()
            ->result_array();

上面的查询结果,

Array([0]=>Array([id]=>1 [name]=>john))

因为我想获取所有行而不覆盖之前的行。我添加了这个算法。

foreach($query as $row)
{   
$employee_list[] = array($row['id']=>$row['name']);                                     
}

现在结果不会被覆盖所以如果我print_r($employee_list); 我会回应,假设我的员工表中有 2 行。

1-约翰,2-彼得

Array([1]=>Array([1]=>john) [2]=>Array([2]=>peter))

我现在的问题是,如何将上述结果数组减少为一维/线性。由于 ID 存储为 KEY,并且 id 列是 INTEGER AUTO INCREMENT PRIMARY KEY,因此它没有任何重复项,这意味着对于插入的每一行,id 都会递增。

如果我想要的数组是这样就可以了。

数组([1]=>约翰[2]=>彼得)

附加信息:我使用 codeigniter 作为我的框架,所以如果 CI 库中有任何已定义的函数,如果有人能告诉我是否有任何函数,将会有所帮助。

【问题讨论】:

  • $employee_list[$row['id']] = $row['name'] ?
  • 谢谢!经过测试,结果是一个一维数组。我才意识到为什么我的结果是这样的。 :) 如果你能把你的答案写成答案,我会尽快接受。
  • 放弃吧,这个问题太琐碎了(而且对社区来说毫无用处),不能放在这里。

标签: php mysql sql arrays multidimensional-array


【解决方案1】:

在过去,您可以使用mysql_result,它将一列选择为一维数组。

但是,自 PHP 5.5.0 起已弃用它,并且参考建议使用 mysqli_fetch_field(这会强制您按照 zerkms 在评论中的建议从响应中进行选择)或 PDOStatement::fetchColumn 如果您愿意使用 PDO .

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 2016-02-05
    • 2021-05-02
    • 1970-01-01
    • 2010-10-15
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多