Oleg061
Новичок
Доброго времени суток, уважаемые гуру, очень прошу помощи
Есть мой проект, в котором есть класс (реализация хтмл-списков), в котором есть практически основной метод, который рекурсивно обходит многомерные массивы, изготовляя одномерный со всей нужной инфой...
Всё бы было хорошо, если бы порой(по до сих пор не известным мне причинам) он не занимался самодеятельностью...
Это, собственно, сам метод...
Это класс, массив из экземпляров которого я создаю:
И тестовый пример с результатом работы метода (результат работы var_dump()):
Большая просьба помочь разобраться - в чем дело, а то тормозится весь проект...
Есть мой проект, в котором есть класс (реализация хтмл-списков), в котором есть практически основной метод, который рекурсивно обходит многомерные массивы, изготовляя одномерный со всей нужной инфой...
Всё бы было хорошо, если бы порой(по до сих пор не известным мне причинам) он не занимался самодеятельностью...
Это, собственно, сам метод...
PHP:
protected static $list; protected static $dim=1; protected static $i=0;
protected function list_from_arr($arr)
{
$veiw="list";
foreach($arr as $key=>$val)
{
if (is_array($val))
{
$content=array("value"=>"$key","description"=>"");
self::$list[self::$i++]=new subelements($veiw,"dir",self::$dim++,$content);//Операция ++ идет после выполнения действия и служит только для уменьшения кода
self::$list[self::$i]=$this->list_from_arr($val);
}
else
{
$content=array("value"=>"$val","description"=>"$key");
self::$list[self::$i++]=new subelements($veiw,"word",self::$dim,$content);
continue;
}
self::$dim--;
}
$list_value=self::$list;
return $list_value;
}
PHP:
class subelements
{
public $veiw;
public $position;
public $dim;
public $content=array("value","description","result");
public function __construct($veiw,
$position="dir",
$dim=0,
$content=array("description"=>"","result"=>""))
{
$this->veiw=$veiw;
$this->position=$position;
$this->dim=$dim;
$this->content=$content;
}
}
PHP:
["Земляные работы"]=>
array(4) {
[1]=>
string(1) "1"
[2]=>
string(1) "2"
[3]=>
string(1) "3"
[4]=>
string(1) "4"
}
["Бетонные работы"]=>
array(4) {
[5]=>
string(1) "5"
[6]=>
string(1) "6"
[7]=>
string(1) "7"
[8]=>
string(1) "8"
}
На выходе -
array(,,,) { - эта часть правильна
[0]=>
object(subelements)#7 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(3) "dir"
["dim"]=>
int(1)
["content"]=>
array(2) {
["value"]=>
string(15) "Земляные работы"
["description"]=>
string(0) ""
}
}
[1]=>
object(subelements)#8 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "1"
["description"]=>
string(1) "1"
}
}
[2]=>
object(subelements)#9 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "2"
["description"]=>
string(1) "2"
}
}
[3]=>
object(subelements)#10 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "3"
["description"]=>
string(1) "3"
}
}
[4]=>
object(subelements)#11 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "4"
["description"]=>
string(1) "4"
}
}
[5]=>
object(subelements)#12 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(3) "dir"
["dim"]=>
int(1)
["content"]=>
array(2) {
["value"]=>
string(15) "Бетонные работы"
["description"]=>
string(0) ""
}
}
[6]=>
object(subelements)#13 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "5"
["description"]=>
string(1) "5"
}
}
[7]=>
object(subelements)#14 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "6"
["description"]=>
string(1) "6"
}
}
[8]=>
object(subelements)#15 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "7"
["description"]=>
string(1) "7"
}
}
[9]=>
object(subelements)#16 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "8"
["description"]=>
string(1) "8"
}
}
[10]=> - А вот здесь начинается бред, при чем, не смотря на то, что i - статичное оно берется в обоих массивах одинаковое, как будто они одновременно создаются.
array(,,,) {
[0]=>
object(subelements)#7 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(3) "dir"
["dim"]=>
int(1)
["content"]=>
array(2) {
["value"]=>
string(15) "Земляные работы"
["description"]=>
string(0) ""
}
}
[1]=>
object(subelements)#8 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "1"
["description"]=>
string(1) "1"
}
}
[2]=>
object(subelements)#9 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "2"
["description"]=>
string(1) "2"
}
}
[3]=>
object(subelements)#10 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "3"
["description"]=>
string(1) "3"
}
}
[4]=>
object(subelements)#11 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "4"
["description"]=>
string(1) "4"
}
}
[5]=>
object(subelements)#12 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(3) "dir"
["dim"]=>
int(1)
["content"]=>
array(2) {
["value"]=>
string(15) "Бетонные работы"
["description"]=>
string(0) ""
}
}
[6]=>
object(subelements)#13 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "5"
["description"]=>
string(1) "5"
}
}
[7]=>
object(subelements)#14 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "6"
["description"]=>
string(1) "6"
}
}
[8]=>
object(subelements)#15 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "7"
["description"]=>
string(1) "7"
}
}
[9]=>
object(subelements)#16 (4) {
["veiw"]=>
string(4) "list"
["position"]=>
string(4) "word"
["dim"]=>
int(2)
["content"]=>
array(2) {
["value"]=>
string(1) "8"
["description"]=>
string(1) "8"
}
}
}
}
}
Большая просьба помочь разобраться - в чем дело, а то тормозится весь проект...