непонятный баг при генераци массива

t43

Новичок
есть функция которая создает массив из файла.

PHP:
    class file
{
    public  function fileToArray($typef)
    {
        foreach(file($typef) as $v)
        {
            if(strpos($v, '|'))
            {
                foreach(explode('|',$v) as $k)
                {
                    $this -> tmpArray[] =  trim($k);
                }
                $this -> arrThisType[] = $this -> tmpArray;
                unset($this ->tmpArray);
            }
            else
            {
                $this ->arrThisType[] = trim($v);
            }
        }
        return $this ->arrThisType;
    }
}

$obj = new file;

for($i=0;$i<10;$i++){
    print_r($obj ->fileToArray('test.txt'));
}
суть в том что если есть в файле запись типа: слово|слово2 то нужно создать двухмерный массив.

когда происходит однократный запуск функции всё пучком, а если запустить функцию многократно, то вылазят непонятные проблемы.

test.txt:
новый файл | new file
новый файл 2
новый файл 3
новый файл 4
новый файл 5 | new file 5
новый файл 6
то получаю вот такой результат:
Array
(
[0] => Array
(
[0] => новый файл
[1] => new file
)

[1] => новый файл 2
[2] => новый файл 3
[3] => новый файл 4
[4] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[5] => новый файл 6
)
Array
(
[0] => Array
(
[0] => новый файл
[1] => new file
)

[1] => новый файл 2
[2] => новый файл 3
[3] => новый файл 4
[4] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[5] => новый файл 6
[6] => Array
(
[0] => новый файл
[1] => new file
)

[7] => новый файл 2
[8] => новый файл 3
[9] => новый файл 4
[10] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[11] => новый файл 6
)
Array
(
[0] => Array
(
[0] => новый файл
[1] => new file
)

[1] => новый файл 2
[2] => новый файл 3
[3] => новый файл 4
[4] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[5] => новый файл 6
[6] => Array
(
[0] => новый файл
[1] => new file
)

[7] => новый файл 2
[8] => новый файл 3
[9] => новый файл 4
[10] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[11] => новый файл 6
[12] => Array
(
[0] => новый файл
[1] => new file
)

[13] => новый файл 2
[14] => новый файл 3
[15] => новый файл 4
[16] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[17] => новый файл 6
)
Array
(
[0] => Array
(
[0] => новый файл
[1] => new file
)

[1] => новый файл 2
[2] => новый файл 3
[3] => новый файл 4
[4] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[5] => новый файл 6
[6] => Array
(
[0] => новый файл
[1] => new file
)

[7] => новый файл 2
[8] => новый файл 3
[9] => новый файл 4
[10] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[11] => новый файл 6
[12] => Array
(
[0] => новый файл
[1] => new file
)

[13] => новый файл 2
[14] => новый файл 3
[15] => новый файл 4
[16] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[17] => новый файл 6
[18] => Array
(
[0] => новый файл
[1] => new file
)

[19] => новый файл 2
[20] => новый файл 3
[21] => новый файл 4
[22] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[23] => новый файл 6
)
Array
(
[0] => Array
(
[0] => новый файл
[1] => new file
)

[1] => новый файл 2
[2] => новый файл 3
[3] => новый файл 4
[4] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[5] => новый файл 6
[6] => Array
(
[0] => новый файл
[1] => new file
)

[7] => новый файл 2
[8] => новый файл 3
[9] => новый файл 4
[10] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[11] => новый файл 6
[12] => Array
(
[0] => новый файл
[1] => new file
)

[13] => новый файл 2
[14] => новый файл 3
[15] => новый файл 4
[16] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[17] => новый файл 6
[18] => Array
(
[0] => новый файл
[1] => new file
)

[19] => новый файл 2
[20] => новый файл 3
[21] => новый файл 4
[22] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[23] => новый файл 6
[24] => Array
(
[0] => новый файл
[1] => new file
)

[25] => новый файл 2
[26] => новый файл 3
[27] => новый файл 4
[28] => Array
(
[0] => новый файл 5
[1] => new file 5
)

[29] => новый файл 6
)
 

С.

Продвинутый новичок
Нужно произвести отладку вашего кода.
 

eax

#
NetBeans немного причесал код
PHP:
class file {

    private $arrThisType;
    private $tmpArray;

    public function fileToArray($typef) {
        $this->arrThisType = array(); // обнуляем массив (причина ошибки)
        foreach (file($typef) as $v) {
            if (strpos($v, '|')) {
                $this->tmpArray = array(); // инициализируем переменную
                foreach (explode('|', $v) as $k) {
                    $this->tmpArray[] = trim($k);
                }
                $this->arrThisType[] = $this->tmpArray;
                //unset($this ->tmpArray);
            } else {
                $this->arrThisType[] = trim($v);
            }
        }
        return $this->arrThisType;
    }

}

$obj = new file;

for ($i = 0; $i < 10; $i++) {
    print_r($obj->fileToArray('test.txt'));
}
 
  • Like
Реакции: t43
Сверху