从 mysql 查询创建数组.列 2 作为键 列 1 作为值


Create array from mysql query. Column2 as key Column 1 as value

我有一个包含

column 1 = state  column 2 = link
Alabama             auburn.alabama.com
Alabama             bham.alabama.com
Alabama             dothan.alabama.com

我需要从我的数据库表中抓取并放入一个我可以array_walk()通过的数组中。 它们需要像这个数组一样被访问。

$arraytable = array(
"auburn.alabama.com"=>"Alabama",
"bham.alabama.com"=>"Alabama",
"dothan.alabama.com"=>"Alabama",
);

我已经尝试了所有方法,但不确定如何使用 php 像这样打印数组来完成这项工作。任何帮助将不胜感激。

注意 您的问题标题与您的示例不一致。 在标题中,您要求列 1 作为键,但您的示例使用列 2 作为键。 我在这里使用了第 2 列...

目前尚不清楚您使用什么MySQL API来获取,但无论是哪种方法,请使用关联获取方法并使用模式$arraytable[$newkey] = $newvalue创建新的数组键。这个例子将在面向对象的MySQLi中:

$arraytable = array();
while($row = $result->fetch_assoc()) {
  // Create a new array key with the 'link' and assign the 'state'
  $arraytable[$row['link']] = $row['state'];
}

你可以为此使用 array_column,因为 PHP5.5 (http://php.net/array_column)

描述

数组 array_column (数组 $array , 混合 $column_key [, 混合 $index_key = null ] )

array_column() 返回数组中单个列的值,由column_key标识。或者,您可以提供一个index_key,以便按输入数组中index_key列中的值为返回数组中的值编制索引。

对于 PHP <5.5:https://github.com/ramsey/array_column/blob/master/src/array_column.php

为了实现AcidReign的建议,以下是片段:

代码:(演示)

$resultset = [
    ['state' => 'Alabama', 'link' => 'auburn.alabama.com'],
    ['state' => 'Alabama', 'link' => 'bham.alabama.com'],
    ['state' => 'Alabama', 'link' => 'dothan.alabama.com']
];
var_export(array_column($resultset, 'state', 'link'));
//                                            ^^^^-- use this column's data for keys
//                                   ^^^^^-- use this column's data for values

输出:

array (
  'auburn.alabama.com' => 'Alabama',
  'bham.alabama.com' => 'Alabama',
  'dothan.alabama.com' => 'Alabama',
)
<小时 />

但是,array_column()不会直接处理结果集对象,但foreach()可以使用数组语法立即访问数据集,而无需任何获取函数调用。

无体:(演示)

$result = [];
foreach ($mysqli->query('SELECT * FROM my_table') as ['link' => $link, 'state' => $result[$link]]);
var_export($result);

或带有身体的 foreach :(演示)

$result = [];
foreach ($mysqli->query('SELECT * FROM my_table') as $row) {
    $result[$row['link']] = $row['state'];
}
var_export($result);

上述所有代码段都返回:

array (
  'auburn.alabama.com' => 'Alabama',
  'bham.alabama.com' => 'Alabama',
  'dothan.alabama.com' => 'Alabama',
)