最后添加到数组中的PHP将替换所有存储的数组值
我想做的是:最后添加到数组中的PHP将替换所有存储的数组值,php,arrays,codeigniter,Php,Arrays,Codeigniter,我想做的是: 从数据库中获取结果 通过分配给stdClass来获取所需的值 将这些对象放入数组中。(您需要在foreach循环中实例化对象: function get_prizes() { // All prize objects are stored here $prizes = array(); // Getting the prizes from a simple database table $query = $this->db->get('
foreach
循环中实例化对象:
function get_prizes()
{
// All prize objects are stored here
$prizes = array();
// Getting the prizes from a simple database table
$query = $this->db->get('prizes');
if ($query->num_rows() > 0) {
foreach($query->result() as $row):
// Prize object
$prize = new stdClass();
// $prize->type = '';
$prize->name1 = $row->prize_name;
$prizes[] = $prize;
endforeach;
}
echo json_encode($prizes);
}
谢谢,工作得很好。为什么它需要在内部实例化?如果数组中的值已经赋值,它如何改变数组中的值?在PHP中,对象是通过引用传递的,因此当您在循环外部创建对象时,每次迭代只会使用一个对象,并将其添加到数组中(使用不同的索引)属性
name1
将保留最后一个值,即Toaster
;因此,您需要在每次迭代时创建一个新对象。
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"}]
function get_prizes()
{
// All prize objects are stored here
$prizes = array();
// Getting the prizes from a simple database table
$query = $this->db->get('prizes');
if ($query->num_rows() > 0) {
foreach($query->result() as $row):
// Prize object
$prize = new stdClass();
// $prize->type = '';
$prize->name1 = $row->prize_name;
$prizes[] = $prize;
endforeach;
}
echo json_encode($prizes);
}