【发布时间】:2016-02-24 00:18:27
【问题描述】:
我想用 MySqli 查询的键值对构建一个数组。到目前为止,我所拥有的内容会覆盖数组的条目:
$array = array();
while($row = mysqli_fetch_array($result))
{
$difference = abs($base - $row["sql_number"]);
$array = [$difference => $row["sql_number"]];
$bar = each($array);
print_r($bar);
}
echo count($array);
ksort($array);
echo count($array);
foreach ($array as $key => $value) {
echo "Key: ".$key;
echo "Value: ". $value;
}
print_r($bar); 打印的键值对是正确的,但我确信这是因为它只打印了来自 mysqli_fetch_array($result) 的最新条目,并且之前的条目被覆盖了。
我想创建这样一个数组,然后按键值使用ksort 对其进行排序。
【问题讨论】:
-
你在这里打错了
foreach ($arrayas,应该读作foreach ($array as。如果那是您的真实代码,则错误报告将引发未定义的数组变量通知。如果您使用的是foreach ($array as,请解决您的问题。 -
由于您不想覆盖该值,请尝试
$array[] = [$difference => $row["sql_number"]];。这将防止相同的difference也被覆盖,但请注意,在下一个foreach中,value将是array。你能发布最终数组的所需结构吗? -
@Fred-ii- 已修复。谢谢!
-
不客气,Lenny。
-
@FirstOne 我已根据您的建议进行了更改,但现在当我想在我的 foreach 循环中访问键值时,它给了我一个错误:
Array to string conversion。我猜这种技术可以构建数组?
标签: php mysql arrays mysqli key-pair