Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с доступом к массиву в классе


Автор: Voldemar2004 22.2.2014, 22:12
Код

<?php

$MyFoto = new Foto();

$MyFoto->folderName_toArray('./');
$MyFoto->show_array();

class Foto{
    
    private $f = array();
        
    public function folderName_toArray($dirpath) {
    $descr = @opendir($dirpath);    // открыть каталог
        if ($descr) {
        $i=0;
            while ($obj = readdir($descr)) {
                if (is_dir($url .'/'. $file)) {
                    if ($obj != '.' && $obj != '..') {
                        $f[] = $obj;
                    }
                }
            }
            for($i=0; $i<10; $i++) {
                echo $f[$i] . "<br />";
            }
            closedir($descr);
        }
        else exit('Не удалось открыть каталог - функция f_read_dir');
    }
    
    public function show_array() {
        for($i=0; $i<10; $i++) {
            echo $f[$i] . "<br />";
        }
    }
}

?>


Почему метод show_array() не видит массив $f?

Автор: AVA12 23.2.2014, 00:35
http://www.php.net/manual/ru/language.oop5.basic.php, особенно первый пример.

Автор: Starikan 23.2.2014, 19:32
Voldemar2004, очевидно, что метов show_array() не является коорденирующим среди звеньев массивных данных и любые взаимодействия его генераций не будует результата тебе давать.

Автор: AVA12 23.2.2014, 20:00
Это гуглопереводчик, что ли? Или еще хуже?

Автор: Voldemar2004 23.2.2014, 20:08
Цитата(AVA12 @  23.2.2014,  21:00 Найти цитируемый пост)
Это гуглопереводчик, что ли? Или еще хуже? 
Что может быть хуже ? smile 

Сам решил проблему:

Код

class Foto{    
    private $MyArr = array();
    private $counter_i = 0;
    
    public function GetMyArray() {
        for($i=0;$i<$this->counter_i;$i++) {
            echo "<br />" . $i . " : " . $this->MyArr[$i];
        }
    }
    
    private function SetMyArray($val) {
        $this->MyArr[$this->counter_i++] = $val;
    }
    
    public function read_album($dirpath) {
    $descr = @opendir($dirpath);
        if ($descr) {
            while ($obj = readdir($descr)) {
                if (is_dir($dirpath.'/'.$obj)) {
                    if ($obj != '.' && $obj != '..') {
                        $this->SetMyArray($obj);
                    }
                }
            }
            closedir($descr);
        }
        else exit('Не удалось открыть каталог - функция f_read_dir');
    }
}

Автор: Starikan 23.2.2014, 20:13
Voldemar2004, красавчик, это я и имел ввиду!
AVA12, ты просто недостаточно разбираешься 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)