我有一个包含
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',
)