Я новичок в использовании PDO и немного застрял - есть ли способ добавить строку в возвращаемый массив fetchAll?
Я хочу использовать значение в строке и создать из него новое значение. Я надеюсь, что мой пример достаточно ясен -
class.php
--------------------
class connect
{
//all PDO database connection functions here
}
class Display
{
function cars($colour)
{
$crud = new crud();
$crud->conn();
$sql = "SELECT * FROM cars WHERE colour=:colour";
$stmt = $crud->db->prepare($sql);
$stmt->bindParam(':colour', $colour);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
****WHAT I WANT TO DO (see edit)*****
foreach ($rows as $row)
{
ADD A ROW CALLED 'newprice' that equals ($row['oldprice'] + 300 / 2)
}
$this->results = $rows;
}
}
index.php
--------------------
//other html code...
$D = new Display;
$D->cars('1');
foreach($D->results as $row)
{
?>
<div class="car">
<h1>Car Name:</h2>
<?=($row['model']);?>
Old Price:
<?=$row['price'];?>
New Price:
<?=($row['newprice']);?> <- outputting the new row I created
</div>
}?>
Можно ли это сделать или есть другой, более эффективный способ сделать это?
Извините, наверное, я не очень ясно со своим примером! Я хочу сделать гораздо больше, чем просто математически изменить значение для нового столбца - я хочу preg_split / запустить его через другой класс и т. Д.
Лучшее решение, которое у меня есть, - это создать новый многомерный массив из предоставленного PDO массива, а затем добавить / отредактировать этот массив, например:
$new=array();
$key_loop = 0;
$row_loop = 0;
foreach ( $rows as $val )
{
$keys = array_keys($val);
foreach ($keys as $key)
{
$new[$row_loop][$keys[$key_loop]] = $val[$keys[$key_loop]];
$new[$row_loop]['new_entry'] = 'this works';
$key_loop++;
}
$row_loop++;
$key_loop = 0;
}