大家好,我看过一个让我感到困惑的代码......代码是。
function mysql_fetch_array_nullsafe($result) {
$ret=array();
$num = mysql_num_fields($result);
if ($num==0) return $ret;
$fval = mysql_fetch_row ($result);
if ($fval === false) return false;
$i=0;
while($i<$num)
{
$fname[$i] = mysql_field_name($result,$i);
$ret[$i] = $fval[$i]; // enum
$ret[''.$fname[$i].''] = $fval[$i]; // assoc
$i++;
}
return $ret;
}
这里分配$ret[$i] = $fval[$i];
..我的问题是我只想知道为什么我们将$ i分配给variblar $ ret ..它是如何工作的?.. $ i的值是否存储到$ ret或$ i作为$ ret的索引..
请帮助我理解这一点..谢谢提前.. :)
答案 0 :(得分:0)
我认为变量$ i是数组变量$ ret。
的键答案 1 :(得分:0)
'PHP中的数组实际上是一个有序的映射。'
因此,与其他语言不同,php数组中没有数字索引。 $ i只是一个hashmap键,结果是一个整数。
答案 2 :(得分:0)
$ i只是一个计数器,所以你最终可能得到类似的数组:
// $fname[$i] = mysql_field_name($result,$i);
$fname[1] => 'field 1';
$fname[2] => 'field 2';
$fname[3] => 'field 3';
// $ret[$i] = $fval[$i];
$ret[1] => 'value1';
$ret[2] => 'value2';
$ret[3] => 'value3';
// $ret[''.$fname[$i].''] = $fval[$i]; // assoc
$ret['field 1'] => 'value1';
$ret['field 2'] => 'value2';
$ret['field 3'] => 'value3';
谁想到这些代码行想要能够使用索引和字段名称查找值:
$data = $ret[1];
$data = $ret['field 1']; //Those would both give the same result ('value1').
答案 3 :(得分:0)
$ i作为mysql的列号,见下图。
| id |名字|姓氏|地址|
| 1 |约翰| doe |美国|
id为0,name为1,lastname为2,地址为3
$ ret数组用于存储mysql数据库中的整个sql行。
将$ i分配给$ ret以从mysql行检索数据。