2014-01-26 4 views
0

У меня есть массив PHP, на самом деле строка MySQL, построенная с активной записью CodeIgniter.Невозможно добавить данные в массив PHP в CodeIgniter

Поэтому у меня есть массив, который var_dumps так:

array (size=10) 
    0 => 
    array (size=4) 
     'user_id' => string '2' (length=1) 
     'puzzle_id' => string '17' (length=2) 
     'birth' => string '2014-01-26 16:08:25' (length=19) 
    1 => 
    array (size=4) 
     'user_id' => string '2' (length=1) 
     'puzzle_id' => string '16' (length=2) 
     'birth' => string '2014-01-26 02:07:05' (length=19) 
    2 => ..... 

это строится так:

$this->db->order_by("birth" , "desc"); 
$rows = $this->db->get("my_table" , $limit)->result_array();   
foreach($rows as $row) 
{ 
    $row['testindex'] = "testvalue"; 
} 
return $rows; 

так почему мой массив НЕ имеют "testindex" индексы?

Спасибо за помощь!

ответ

2

Потому что это не так, как работает PHP и foreach().

$row в вашем коде является копией соответствующего элемента в $rows, а не фактическим элементом. Изменение копии не изменяет оригинал.

Вы хотите сделать это:

for ($i = 0, $c = count($rows); $i < $c; $i++) 
{ 
    $rows[$i]['testindex'] = 'testvalue'; 
} 
+0

Ничего себе, я всегда думал, что Еогеасп неявно делает это для меня. Спасибо за Ваш ответ! Это и решило мою проблему, и укрепило меня, как поймать рыбу :) Принимая за несколько минут. – jeff

+0

@CengizFrostclaw Если это решение решит вашу проблему, тогда примите это. –

0

Попробуйте это (PHP 5 +):

foreach($rows as &$row) 
{ 
    $row['testindex'] = "testvalue"; 
} 
+0

Спасибо, но мой веб-сервер имеет более старый PHP. – jeff

0

Я думаю, что я могу сделать это с foreach тоже.

Как это:

foreach($rows as $key => $value) 
{ 
    $rows[$key]['testindex'] = "testvalue"; 
} 
+0

Да, можно. Но '$ value' - это то, что вам здесь не нужно. – Narf

+0

Вы правы, однако в цикле for есть две ненужные переменные '$ i' и' $ c'. И мне нравится внешний вид foreach. Меньше кода и более удобочитаемость. Спасибо за ваш ответ, хотя! – jeff

+0

Они не нужны. :) – Narf

Смежные вопросы