Я пытаюсь понять разницу между push массива и присвоением значения массиву со знаком равенства в цикле foreach.
Вот моя проблема:
$data['database'] = array();
if ($sql->num_rows() > 0)
{
foreach($sql->result_array() as $row)
{
$data['database'] = $row;
// array_push($data['database'], $row);
var_dump($data['database']);
}
}
die();
Давайтепредставьте, что до этого я делал запрос к базе данных, что-то в строке этого: $ sql = ee () -> db-> select ('*') -> from ('exp_credit_tracker_assoc') -> get ();так как я использую expressionengine, но на самом деле любое подготовленное утверждение хорошо.
Теперь, если я использую оператор комментария
array_push($data['database'], $row);
Это фактически отправляет мое значение в мой массив $ data ['database '], поэтому, когда я выгружаю свой массив за пределы цикла foreach, я вижу все значения.
Вместо того, чтобы назначать только значение:
$data['database'] = $row;
, я могу видеть толькомассив внутри моего цикла, и, если я выгружаю свой массив за пределы цикла, я вижу только свою первую строку.Что очень странно, потому что где-то в моем коде есть подобный цикл, который делает прямо противоположное, только присваивая значение:
$sql = ee()->db->select('*')->from('exp_credit_tracker_credit_type')->get();
$credit_type = array();
foreach ($sql->result() as $row) {
$credit_type[$row->credit_name]=$row->credit_name;
}
Мне нужно использовать синтаксис присваивания, так как я хочу присвоить некоторые значениякакая-то другая переменная на лету, как только я делаю запрос с MySQL, мне стало интересно, ошибаюсь ли я.