PHP dinamik çok boyutlu dizi veya nesneleri

1 Cevap php

Ben bir dizi değişken veya nesne bir alt-katmanlı navigasyon saklayan bir özyinelemeli işlev (ya da yöntem) oluşturmak için çalışıyorum. İşte ne var:

class Navigation extends Database
{

    function build($parent_id = 0)
    {
    	$query = 'SELECT id, name, href, parent_id 
    	FROM navigation
    	WHERE parent_id = '.$parent_id.' 
    	ORDER BY name';
    	$results = $db->query($query);
    	while ($row = $results->fetch_object()) {
    		$nav[$row->id] = $row;
    		// echo $row;
    		$this->build($row->id);
    	}
    	return $nav;
    }
}

Eğer yorum ise echo $row her şey çalışıyor. Peki ben bunun üç katmanlı navigasyon yapmak istiyorum şudur:

Array
(
    [1] => stdClass Object
    (
    	[id] => 1
    	[name] => Home
    	[href] => home.php
    	[parent_id] => 0
    )
    [2] => stdClass Object
    (
    	[id] => 2
    	[name] => Company
    	[href] => company.php
    	[parent_id] => 0
    )
    	[4] => stdClass Object
    	(
    		[id] => 4
    		[name] => Company Vision
    		[href] => company_vision.php
    		[parent_id] => 2
    	)
    	[5] => stdClass Object
    	(
    		[id] => 5
    		[name] => Company Goals
    		[href] => company_goals.php
    		[parent_id] => 2
    	)
    [3] => stdClass Object
    (
    	[id] => 3
    	[name] => Products
    	[href] => products.php
    	[parent_id] => 0
    )
    	[6] => stdClass Object
    	(
    		[id] => 6
    		[name] => Products Shoes
    		[href] => products_shoes.php
    		[parent_id] => 3
    	)
    		[7] => stdClass Object
    		(
    			[id] => 7
    			[name] => Nike
    			[href] => products_shoes_nike.php
    			[parent_id] => 6
    		)

)

Sadece bir örnek olarak, dinamik olarak bu yapacağını dizi yani:

$nav[$row->id] = $row; // Home
$nav[$row->id] = $row; // Company
$nav[2][$row->id] = $row; // Company Vision
$nav[2][$row->id] = $row; // Company Goals
$nav[$row->id] = $row; // Products
$nav[3][$row->id] = $row; // Products Shoes
$nav[3][6][$row->id] = $row; // Products Shoes Nike

Şimdiden teşekkürler.

Soru: Nasıl bir özyinelemeli işlev / yöntem yapmak ve oldukça sonuçlarını yankılanan daha bir değişken özyinelemeli bilgiyi saklamak?

Issues: (a) PHP overwrites the variable every time it calls itself recursively (b) A solution would be dynamically creating an array on the fly, but I don't know if that is possible

1 Cevap

Sana http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ iç içe setleri algoritma gerekir şüpheli