[php5] Problem z widocznością zmiennej

0

Cześć, jest tak:

<?php
  public $fields;
    
  function __construct()
  {
    $fields[] = new DataStorer(); //to po prostu kilka pól
  }
?>

Następnie mam dwie funkcje:

public function readData()
{
$i = 0;
while(($result = mysql_fetch_assoc($rows))!=null)
{
  $fields[$i]->id=$result["ID"];
  $fields[$i]->nazwa=$result["nazwa"];
  $fields[$i]->pole1=$result["pole1"];
  $fields[$i]->pole2=$result["pole2"];
  $fields[$i]->pole2=$result["pole3"];
  $i++;
}

//ta funkcja najpierw pobiera dane z bazy, a potem jak widać przypisuje.
//po opuszczeniu pętli sizeof($fields) daje 2 (czyli tyle, ile powinno być)

I druga funkcja, która wyświetla dane:

public function toString() 
{
echo "<table>
       <tr><td>ID</td><td>Nazwa</td><td>Pole1</td><td>Pole2</td><td>Pole3</td></tr>";
for($i = 0; $i<sizeof($fields); $i++)       
{
  echo "<tr>";
  echo "<td>".$fields[$i]->id."</td>".
       "<td>".$fields[$i]->nazwa."</td>".
       "<td>".$fields[$i]->pole1."</td>".
       "<td>".$fields[$i]->pole2."</td>".
       "<td>".$fields[$i]->pole3."</td></tr>";  
}
	
echo "</table>";	      
}

Niestety tutaj przed pętlą sizeof($fields) daje już 0.
Jak to możliwe?

0

Z tego co widzę $fields to zwykła tablica. Powinieneś raczej użyć count zamiast sizeof:

for($i = 0; $i<count($fields); $i++)       
{
[...]
0

Odwołujesz sie do zmiennej lokalnej metody. Zmień $fields na $this->fields

0

Ewentualnie użyj słowa kluczowego global;

1 użytkowników online, w tym zalogowanych: 0, gości: 1