2012-12-15 63 views
0

我從我的數據庫獲取數據,他們看起來是這樣的:從數據庫獲取並存儲在一個新的數組PHP

[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 

其中關鍵-1是列名。 (我只有一個入口)。

我想只提取列值,並將它們保存到將這樣輸出的新數組:

{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"} 

我希望它看起來完全一樣,而不是:[{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"}]

我試着這個:

$cart["key-1"]=$output["key-1"]; 

其中$ output是首先顯示的DB的結果(帶有[]的那個)。

和$ cart是我想要的新數組。

兩個被聲明爲:

$cart=array(); 
$output=array(); 

$output[]=$row哪裏行是DB的獲取結果。怎麼做?

回答

1

下面是做這件事,我已經取代了數據庫行字符串這裏,並且利用了json_decode()json_encode()

$data = '[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}]'; 

// convert to an array 
$data = json_decode($data, true); 

// create new array here 
$cart = array(); 

for ($i = 0; $i < count($data); $i++) 
{ 
    foreach ($data[$i] as $k => $v) 
    { 
     if (strpos($k, 'key') !== FALSE) 
     { 
      $cart[$k] = $v; 
     } 
    } 
} 

echo $cart['key-1'] . '<br/>'; 

echo json_encode($cart); 

輸出:

1 
{"key-1":"1","key-2":"1","key-3":"1","key-4":"1"} 
0

這是一個非常混亂的問題。 從我收集你想要的也許這.. ..?

$cart=array(); 
foreach ($output as $index=>$value){ 
    if stripos($index,"key-"){ 
    cart[$index]=$value; 
    } 
} 
+0

它根本不是混亂的。我只想從列中獲取值並將它們存儲在一個新數組中。這是什麼複雜?我會嘗試你的答案。 – ghostrider

+1

好吧,我的壞。我沒有意識到它是JSON,並認爲它只是一個數組。戴爾的答案似乎是正確的。 – Smuuf

0

使用mysql_fetch_assoc()得到的只有列名;)

while ($row = mysql_fetch_assoc($result_of_query)) 
{ 
    echo $row['key-1']; 
    echo $row['key-2']; 
} 
+0

好的,謝謝你。我也希望我的ooutput不要在它前面有這個[]。因爲我需要那種格式的輸出。 ( 從...開始 {})。我對php幾乎一無所知,所以我不知道[]和{}之間的區別是什麼,但我需要這種格式({})。 – ghostrider

+0

你從db返回一個'json'?我的意思是,我理解你的問題是這樣的:你試圖從數據庫中獲取一些行,並且他們進入了一個數組,其中包含編號(索引)數組和列名鍵值成對數組。所以我的代碼是一個解決方案來獲取像這樣的「問題」......如果你有一個json,那麼你只需在$ output_array [0]上調用'json_encode()',然後遍歷它的返回值,並只獲取​​列名。 – mtndesign

+0

是的,我確實返回了一個json。好吧,我會嘗試一下,謝謝! – ghostrider

相關問題