2010-11-13 47 views
1

這是我的代碼如何將我的數據庫結果放入3維數組中?

mysql_select_db("my_db", $con); 
$result = mysql_query("SELECT title,text,date FROM news limit 5"); 

有沒有辦法從$result提取標題,文字,日期和把他們分爲3維數組?

+4

你什麼はnt你的三維數組看起來像llike? – 2010-11-13 22:05:36

+0

你的意思是二維嗎?如果第二維包含三個值,例如'array('title','text','date'),array('title','text','date'))'? – 2010-11-13 22:06:56

+0

數組的數組將爲您的3D數組? – 2010-11-13 22:13:19

回答

0

我想你以後實際上是一個二維數組(其中第二個維度有三個要素)。 (如果我錯了指正。)

一個mysql_fetch_array文件下的評論都有一個答案:

(Disclamer:此代碼是不必要的冗長我不想改變,雖然它因爲我從上面的網頁複製它。對於改進,我指的是評論。)

<?php 
function mysql_fetch_rowsarr($result, $numass=MYSQL_BOTH) { 
    $i=0; 
    $keys=array_keys(mysql_fetch_array($result, $numass)); 
    mysql_data_seek($result, 0); 
    while ($row = mysql_fetch_array($result, $numass)) { 
     foreach ($keys as $speckey) { 
     $got[$i][$speckey]=$row[$speckey]; 
     } 
    $i++; 
    } 
    return $got; 
} 
?> 

然後,您應該可以使用該功能作爲

<? 
mysql_select_db("my_db", $con); 
$result = mysql_query("SELECT title,text,date FROM news limit 5"); 

$arr = mysql_fetch_rowsarr($result); 
$row_2_title = $arr[2]['title']; 
?> 
+0

不必要的複雜。 foor循環與$ got [$ i] = $ row相同;' – 2010-11-13 22:13:29

+0

啊,這很好,謝謝。正如我引用了不同的頁面,我不會更改代碼,但我會讓您的評論突出顯示可能的改進:-) – aioobe 2010-11-13 22:17:32

+0

不,它只是複雜的代碼,而不是更多的功能。或者,也許我沒有看到它。請解釋爲什麼需要'$ keys'。 – 2010-11-13 22:19:09

0

什麼

$result = mysql_query("SELECT title,text,date FROM news limit 5"); 
$array = array(); 
$i = 0; 

while($row = mysql_fetch_assoc($result) { 
    $array[$i] = array(); 
    // i'm just guessing at what sort of array you want 
    $array[$i][$row['title'] = array('text' => $row['text'], 'date' => $row['date']); 
    $i++; 
} 
+0

你缺少一個']'而不需要'$ i'計數器,'$ array []'很好。不知何故,結構沒有多大意義。您將創建一個數組,其中包含包含具有一個元素(這是一個數組)的數組的數組。有一個數組太多了;) – 2010-11-13 22:12:26

+0

是不知道爲什麼OP想要一個3d陣列(我猜只是一個錯誤)但需要$ i計數器的原因是,如果你這樣做: $ array [] =陣列(); $ arra [] [$ row ['title'] = array(// stuff); 如果你print_r你將在數組中有兩個元素而不是一個。 – 2010-11-13 22:21:05

+0

那麼爲什麼不呢:'$ array [] = array($ row ['title'] => array(// stuff));'或者甚至更好(是的,我知道OP說3維,但是你的例子只是生成複雜的結構):'$ array [$ row ['title']] = array(// stuff));' – 2010-11-13 22:23:41

0

我很想知道是什麼...你需要一個三維陣列,但確定:

$dim = array(); 

$result = mysql_query(...); 

while ($row = mysql_fetch_assoc($result)) 
    // Whatever you want to save in that particular bucket, 
    // I'll be using the result set 
    $dim[$row['title']][$row['text']][$row['date']] = $row; 

奇怪,...

0

如果我們已經在猜測,這裏是雷:

$results = array(); 

while(($row = mysql_fetch_assoc($result))) { 
    $results[] = $row; 
} 

,這將創造一個這樣的數組:

array(array('title' => 'foo', 
      'text' => 'bar', 
      'date' => 'baz'), 
     //... 
) 
相關問題