1
我想要做的事:PHP在數組最後添加替換所有存儲陣列值
- 從數據庫中獲取結果。
- 通過分配給stdClass來獲取所需的值。
- 將這些對象放在數組中。 (<-問題)
- 並輸出爲JSON。
對象沒問題,他們得到正確的值。但是,當它們被分配給數組一次時,它們會替換所有以前的數組值。
我使用CodeIgniter來做數據庫的東西。
功能:
function get_prizes(){
//All prize objects are stored here
$prizes = array();
//Prize object
$prize = new stdClass();
$prize->name1 = '';
//$prize->type = '';
//Getting the prizes from a simple database table
$query = $this->db->get('prizes');
if($query->num_rows() > 0){
foreach ($query->result() as $row):
$prize_name = $row->prize_name;
$prize->name1 = $prize_name;
//$prize->type = $prize_name;
$prizes[] = $prize;
echo " Item: " . print_r($prizes, true) . "<br>";
endforeach;
}
echo json_encode($prizes);
}
輸出:
Item: Array ([0] => stdClass Object ([name1] => Radio))
Item: Array ([0] => stdClass Object ([name1] => Television) [1] => stdClass Object ([name1] => Television))
Item: Array ([0] => stdClass Object ([name1] => Toaster) [1] => stdClass Object ([name1] => Toaster) [2] => stdClass Object ([name1] => Toaster))
[{"name1":"Toaster"},{"name1":"Toaster"},{"name1":"Toaster"}]
我試過array_push()。也做同樣的事情。
謝謝你,完美的作品。爲什麼需要在裏面實例化?它是如何改變數組中的值,如果他們已經分配? –
在PHP中,對象是通過引用傳遞的,所以當你在循環外部創建對象時,每次迭代只會使用一個對象,並將被添加到數組中(使用不同的索引)。屬性'name1'將保留最後一個值'Toaster';因此,您需要在每次迭代中創建一個新對象。 –