MySQLi 获取结果并创建键值数组
MySQLi get results and create key value array
我想用 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
对它进行排序。
您的假设是正确的。因为你在循环中有 print_r
,即使它每次都替换值,你也每次都打印它。
这一行:
$array = [$difference => $row["sql_number"]];
应该是这样的:
$array[$difference] => $row["sql_number"];
这样,您将跟踪以前的值 (keys
) 并添加新值。
这个例子说明了问题:
$a = array('ok' => 'fine');
$b['ok'] = 'fine';
print_r($a); // Array ( [ok] => fine )
echo '<br>';
print_r($b); // Array ( [ok] => fine )
echo '<br><br>';
$a = array('ok2' => 'fine2');
$b['ok2'] = 'fine2';
print_r($a); // Array ( [ok2] => fine2 )
echo '<br>';
print_r($b); // Array ( [ok] => fine [ok2] => fine2 )
echo '<br><br>';
我只想提一下,您不能忘记,这将覆盖 之前的differences
。 在这种情况下,相同的$row["sql_number"]
-s会产生相同的差异,所以可能不是问题。还是值得一提的。此问题的示例:
$b['ok'] = 'fine';
print_r($b); // Array ( [ok] => fine )
echo '<br><br>';
$b['ok'] = 'fine2';
print_r($b); // Array ( [ok] => fine2 )
我想用 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
对它进行排序。
您的假设是正确的。因为你在循环中有 print_r
,即使它每次都替换值,你也每次都打印它。
这一行:
$array = [$difference => $row["sql_number"]];
应该是这样的:
$array[$difference] => $row["sql_number"];
这样,您将跟踪以前的值 (keys
) 并添加新值。
这个例子说明了问题:
$a = array('ok' => 'fine');
$b['ok'] = 'fine';
print_r($a); // Array ( [ok] => fine )
echo '<br>';
print_r($b); // Array ( [ok] => fine )
echo '<br><br>';
$a = array('ok2' => 'fine2');
$b['ok2'] = 'fine2';
print_r($a); // Array ( [ok2] => fine2 )
echo '<br>';
print_r($b); // Array ( [ok] => fine [ok2] => fine2 )
echo '<br><br>';
我只想提一下,您不能忘记,这将覆盖 之前的differences
。 在这种情况下,相同的$row["sql_number"]
-s会产生相同的差异,所以可能不是问题。还是值得一提的。此问题的示例:
$b['ok'] = 'fine';
print_r($b); // Array ( [ok] => fine )
echo '<br><br>';
$b['ok'] = 'fine2';
print_r($b); // Array ( [ok] => fine2 )