Использование array_filter в классах

s@nch0

Хочу всё знать
Допустим имеется такой класс:

PHP:
class url
{
    public $url_data = array();
    public $path_array = '';

    public function __construct($url){
        $this->url_data = parse_url($url);

        //$this->path_array = array_filter(explode('/', $this->url_data['path']), array(&$this, 'safe_data'));

        $t1 = explode('/', $this->url_data['path']);
        $t2 = array_filter($t1, array(&$this, 'safe_data'));

        $this->path_array = $t2;
    }

    /**
     * Фильтр
     *
     * @param $el
     * @return mixed
     */
    private function safe_data($el){
        if (!empty($el)){
            $pattern  = '/[^0-9a-zA-Z_.\-]/';
            $replacement = '';
            
            $el = preg_replace($pattern, $replacement, $el);

            return true;
            //return  preg_replace($pattern, $replacement, $el);
        }
    }
}

$url = new url('http://www.site.ru/test1/test/tt&&/?asd');

var_dump($url->path_array);
Почему в результате не сохраняются изменения члена класса safe_data ?
Если запустить под отладчиком, то в самой функции значения меняются, но не присваиваются в $t2

При выполнении получаем

array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt&&"
}

А должно было получиться так

array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt"
}
 

s@nch0

Хочу всё знать
Млин, как же всё так полезно внимательно читать мануал ))

Если callback-функция возвращает true, данное значение возвращается в массив input. Ключи массива сохраняются.
Вопрос такой, как тогда изменить возвращаемое значение ?
 

s@nch0

Хочу всё знать
Вопрос закрыт :)

UP:
Иногда бывает полезно систематизировать свои мысли в одном месте))
 
Сверху