将$ i分配给PHP中的另一个变量

时间:2014-02-14 02:57:05

标签: php

大家好,我看过一个让我感到困惑的代码......代码是。

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的索引..

请帮助我理解这一点..谢谢提前.. :)

4 个答案:

答案 0 :(得分:0)

我认为变量$ i是数组变量$ ret。

的键

答案 1 :(得分:0)

'PHP中的数组实际上是一个有序的映射。'

因此,与其他语言不同,php数组中没有数字索引。 $ i只是一个hashmap键,结果是一个整数。

参考:http://www.php.net/manual/en/language.types.array.php

答案 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行检索数据。