2012-10-16 48 views
1

我從這個函數得到奇怪的行爲。取數組函數在數組的每個位置加倍值?

輸入

public function fetch_array($result_set) 
{ 
     $rows = array(); 
     while ($row = mysql_fetch_array($result_set)) 
     { 
      $rows[] = $row; 
      print_r($row); 
      break; 
     } 
     return $rows; 

} 

我所做的功能運行一次,但它從我的MySQL查詢結果複製一行。

輸出

Array ([0] => Sarah [first_name] => Sarah [1] => Palin [second_name] => Palin) 

它應該是

正確的輸出

Array ([first_name] => Sarah [second_name] => Palin) 

我用該SO質疑示例

Use mysql_fetch_array() with foreach() instead of while()

不是我的查詢或MySQL結果故障

http://i.imgur.com/CZnIF.png

enter image description here


這是怎麼回事錯在這裏?

+0

'$ rows'數組與'mysql_fetch_array'返回的'$ row'數組完全相同。那麼爲什麼不在獲取它之後返回'$ row'呢?在旁註:**不要**使用'mysql_'函數。他們很快就會從PHP中刪除。並使用'mysql_fetch_assoc'而不是'mysql_fetch_array'。 – w00

+0

在技術上它不一樣,它是一個包含$ row數組的數組,但你的觀點是有效的。 –

回答

2

當使用mysql_fetch_array時,爲其提供MYSQL_ASSOC標誌。

編輯:這是你的代碼,用適當的變化

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 

此外,您還可以通過餵養它MYSQL_NUM

1

爲什麼你一個結果的原因而希望只用數字指標讓他們其他的是因爲你在一個新數組($ rows)中推入一個數組($ row)。通過推入數組中的某些東西(您使用的括號),您會得到一個自動遞增鍵。

1

試試這個:

$rows['name'] = $row['name']; 
$rows['second_name] = $row['second_name']; 

...

,而不是

$rows[] = $row; 
+0

謝謝,但是如果我想將這個函數與其他數據一起使用,我不認爲這會起作用 – kaleeway

1

這是完全正常的和預期的行爲。如果您只想要關聯數組,請使用

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))