2014-05-12 3 views
1

Как можно было бы заполнить массив данными, которые были извлечены из базы данных внутри класса, чтобы данные в массиве имели тип объекта Fuelprices?Заполнение массива типа класса в PHP

class Fuelprices { 

    private $year; 
    private $coal; 

    private $data = array(); 

    public function __construct($year, $coal) { 
     $this->year = $year; 
     $this->coal = $coal; 
    } 

    public function arrayContainingObjects() { 
     $arrayFromDatabase = array(
      array('year' => 2010, 'coal' => 22.54), 
      array('year' => 2011, 'coal' => 42.87), 
      ... 
      ); 
     // fill $data-array with object of Fuelprices object type 
     return $data; 
    } 

} 

$array = $instanceOfFuelpricesClass->arrayContainingObjects(); 

... поэтому содержание массива $ это

array(
    object1, 
    object2, 
    ... 
); 
+0

Просто нажмите 'new Fuelprices ($ year, $ coal)' s в массив. –

+1

Почему это будет функция на экземпляре «Fuelprices»? – cmbuckley

ответ

1

Просто добавьте new Fuelprices($year, $coal) объекты в массив.

foreach($arrayFromDatabase as $theData){ 
    $data[] = new Fuelprices($theData['year'], $theData['coal']); 
} 
+1

Спасибо за эту ракету. Очень просто. Мне пришлось менять члена класса от частного к публичному, но это работает как прелесть. – David

+0

Добро пожаловать :) –

0

С PDO, если ваш класс имеет общие свойства, соответствующие намс столбцов, вы можете использовать $PDO::FETCH_CLASS см online docs. Для больших наборов результатов это будет более эффективно, если загрузить их все в массив в памяти.

<?php 
$stmt = $pdo->prepare($sql); 

$stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "FuelPrices"); 

# pass parameters, if required by the query 
$stmt->execute($parameters); 

foreach ($stmt as $row) { 
    // do something with (each of) your object 
} 
Смежные вопросы