我正在尝试从MySQL获取数据。因为我还在学习PHP和MySQLi,所以我不完全理解为什么这段代码也会用数字键打印出双重结果。我需要只推送带有值的字符串键。谢谢你的指导。
码
if ( $r = $mysqli -> query ( $q ) ) {
${ 'err_css_' . $err_asid } = array ();
while ( $row = mysqli_fetch_array ( $r ) ) {
array_push ( ${ 'err_css_' . $err_asid }, ${ 'err_css_' . $err_asid }[$row['language_asid']]=$row['value'] );
}
print_r ( ${'err_css_' . $err_asid } );
}
结果:
Array (
[ces] => background:czech_flag_url;
[0] => background:czech_flag_url; // i dont want numeric key
[eng] => background:english_flag_url;
[1] => background:english_flag_url; // i dont want numeric key
)
答案 0 :(得分:2)
问题是您未正确使用array_push
。实际上,你根本不需要它:
if ( $r = $mysqli->query ( $q ) ) {
$css = array ();
while ( $row = mysqli_fetch_array ( $r ) ) {
$css[$row['language_asid']] = $row['value'] );
}
}
另外,我建议您不要使用"变量"。这是一个基本无用的功能,除了降低代码的可读性之外什么都不做。使用数组或对象:
${ 'err_css_' . $err_asid } = array (); // NO
$err_css[$err_asid] = array (); // yes
答案 1 :(得分:1)
而不是使用mysqli_fetch_array
您需要使用mysqli_fetch_assoc
答案 2 :(得分:0)
它显示双重结果的原因是因为有双重结果! mysqli_fetch_array()生成具有相同值的关联数组和数值数组。考虑使用mysqli_fetch_assoc()或使用is_numeric($ key)进一步过滤结果。