Здравствуйте, вот мой код: Код (Text): class Mcat extends Db { var $id; function __construct() { $this->id = $_GET['id']; } function return_cat() { $sql = "SELECT * FROM subcat WHERE active=1 AND cat=".$this->id." ORDER BY id ASC" ; $res = mysql_query($sql) ; return $res ; } } class Ccat extends Mcat { function print_cat() { $res = parent::return_cat() ; $vcat = array(); while ($row = mysql_fetch_assoc($res)) { $vcat[$row['id']] = array("id"=>"$row[id]", "title"=>"$row[title]", "cat"=>"$row[cat]", "image"=>"$row[image]", "active"=>"$row[active]"); } return $vcat; } } $aux_vcat = new Ccat() ; $aux_vcat = $aux_vcat->print_cat() ; $count_cat = count($aux_vcat) + 1; for ($i=1; $i < $count_cat; $i++) { echo $aux_vcat[$i]['image']; } Проблема в том, что если в $_GET[id] передаю 1, то все отображается нормально, при любом другом (2,3,4 и т.п.), выводит просто пустые блоки (кол-во блоков правильное). P.S.: Проверял функцией print_r($aux_vcat) - массив выводится правильно при любых $_GET[id]. Код (Text): Array ( [4] => Array ( [id] => 4 [title] => Подкатегория 3 [cat] => 3 [image] => pizhami.jpg [active] => 1 ) [6] => Array ( [id] => 6 [title] => Подкатегория 4 [cat] => 3 [image] => pizhami.jpg [active] => 1 ) )
$vcat[$row['id']] = array("id"=>"$row[id]", "title"=>"$row[title]", "cat"=>"$row[cat]", "image"=>"$row[image]", "active"=>"$row[active]"); Это спокойно заменяется на $vcat[$row['id']] = $row; А вообще - у вас в массиве элементы с индексами 4 и 6, а цикл for ($i=1; $i < $count_cat; $i++) пытается получить элементы с индексами 1 и 2. Сделайте последний цикл так: Код (Text): foreach ($aux_vcat as $id=>$data){ echo $data['image']; }