2017-09-26 33 views
0
[{ 
    "id": "000060000000000071964708\/17\/201309:55:00" 
}, { 
    "column": "pcchrgcod" 
}] 

這是我的我的選擇查詢和添加新的密鑰對。在array_map中添加鍵值對php

我的願望是:

[{ 
    "id": "000060000000000071964708\/17\/201309:55:00", 
    "column": "pcchrgcod" 
}] 

我想的是:

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $rows[] = array_map('utf8_encode', $selected_row); 
    array_push($rows, array('column' => $column)); 
} 

在我的解決方案,我用array_push,但它並沒有給我回所需的輸出。

如何解決這個問題?

輸出是json_encode

UPDATE

該數組是從選擇的查詢結果。在該查詢的返回行上,我想添加另一對鍵值。這就是爲什麼我要添加另一個密鑰對值

Additional Question

之所以說這個查詢

Select column AS colunname from table

而從這個查詢我想要的columnname = 'column_name'價值?

+0

我認爲,解決辦法將是固定查詢 – hassan

+0

@hassan我需要返回的列名,可以用在MySQL中值一起返回列名? – Martin

+0

這就是'PDO :: FETCH_ASSOC'做 – hassan

回答

0

可以使用array_walk實現這一點,試試下面的代碼,

$str = '[{ 
    "id": "000060000000000071964708\/17\/201309:55:00" 
}, { 
    "column": "pcchrgcod" 
}]'; 
$arr = json_decode($str, true); // true => making it normal array 
$result = []; // output array 
array_walk($arr, function ($item, $key) use (&$result) { // passing address of result 
    $result[key($item)] = $item[key($item)]; // key => first key of array 
}); 
print_r($result); // output of the snippet 

這裏是工作code

編輯: 按照要求,請檢查下面的代碼段。

while ($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $temp = array_map('utf8_encode', $selected_row); 
    $temp_row = ['id'=> $temp['id'], 'column' => $temp['column']]; 
    array_push($rows, $temp_row); 
} 
+0

對不起,我必須在評論中寫錯了。這是選擇的結果。我想在每一行的返回值上添加另一個鍵值。 – Martin

+1

你能按照那個更新你的問題嗎?因爲我現在還不清楚 – rahulsm

+0

列中會有很多我只添加了ID的例子我只是想在結果集中添加那個列名我不想重新創建數組只是添加一對 – Martin