2014-02-14 36 views
-1

你好,我看到了一個代碼,它真的讓我感到困惑......代碼是。

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];分配..My的問題是,我只是想知道爲什麼我們$分配我到variblar $ ret..How它的工作原理?..存儲到$ $ i的值RET或$我作爲$ RET的指標..

請幫我理解這..Thanks提前.. :)

+0

'$ ret'是一個數組,並且'$ i'指定了數組的索引 –

+1

這是相當不好的代碼 – 2014-02-14 03:01:29

回答

0

我覺得變量$ i是數組變量$ RET的鑰匙。

+0

所以你說$ i作爲一個鍵?那麼什麼是鍵$的對應值一世 ? – william

0

'PHP中的數組實際上是一個有序地圖。'

因此,與其他語言不同,php數組中沒有數字索引。 $ i只是一個hashmap關鍵字,它是一個整數。

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

+0

那麼我在這裏做了什麼?....你能用一個例子來探索你的答案 – william

+1

@william說當我們取一行時,有兩種方法可以訪問每一列:按列索引和列名。 'mysql_fetch_array_nullsafe'提供了它們兩個。所以說你的sql是'select id,name from xxx',你可以通過$ ret [1]和$ ret ['name']來獲取名字。 –

0

$我只是一個計數器,所以你可能最終得到相似的陣列:誰曾想到了這些代碼行希望能夠看

// $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'). 
0

$ i充當mysql的列號,參見下圖。

| id |名稱|姓氏|地址|

| 1 |約翰| doe | USA |

的ID爲0,名稱將是1,姓氏將是2,和地址將是用於整個SQL行從MySQL數據庫存儲3

$ RET陣列。

其中,將$ i分配給$ ret以從mysql行檢索數據。

+0

因此假設$ i被分配給1 ..並且當我們調用$ ret [$ i]時,它會輸出約翰? – william

+0

@william是的。它會顯示約翰。 – JMWORX

相關問題