İç içe setleri, php dizi ve dönüşüm

1 Cevap php

I need to transform my nested sets structure (mysql) into json for this spacetree 1) http://blog.thejit.org/wp-content/jit-1.0a/examples/spacetree.html

I found this function to create an array from nested sets: 2) http://semlabs.co.uk/journal/converting-nested-set-model-data-in-to-multi-dimensional-arrays-in-php

Ben de PHP işlevi json_encode ile json içine php dizi dönüştürebilirsiniz

Benim sorun: (ikinci bağlantıdan) işlevi nestify tam olarak ihtiyacım olduğunu bana verir. http://pastebin.com/m68752352: Ben böyle bir şey gerekiyor

Eğer bana doğru dizi verir bu yüzden bana "nestify" işlevini değiştirmek yardımcı olabilir misiniz?

İşte bu fonksiyon bir kez daha olduğunu:

function nestify( $arrs, $depth_key = 'depth' )
    {
    	$nested = array();
    	$depths = array();

    	foreach( $arrs as $key => $arr ) {
    		if( $arr[$depth_key] == 0 ) {
    			$nested[$key] = $arr;
    			$depths[$arr[$depth_key] + 1] = $key;
    		}
    		else {
    			$parent =& $nested;
    			for( $i = 1; $i <= ( $arr[$depth_key] ); $i++ ) {
    				$parent =& $parent[$depths[$i]];
    			}

    			$parent[$key] = $arr;
    			$depths[$arr[$depth_key] + 1] = $key;
    		}
    	}

    	return $nested;
    }

1 Cevap

: Aşağıdaki kod parçası, ben web üzerinde bulunan bazı PHP Doktrin kod uyarlanan hile yapmak gerekir

function toHierarchy($collection)
{
        // Trees mapped
        $trees = array();
        $l = 0;

        if (count($collection) > 0) {
                // Node Stack. Used to help building the hierarchy
                $stack = array();

                foreach ($collection as $node) {
                        $item = $node;
                        $item['children'] = array();

                        // Number of stack items
                        $l = count($stack);

                        // Check if we're dealing with different levels
                        while($l > 0 && $stack[$l - 1]['depth'] >= $item['depth']) {
                                array_pop($stack);
                                $l--;
                        }

                        // Stack is empty (we are inspecting the root)
                        if ($l == 0) {
                                // Assigning the root node
                                $i = count($trees);
                                $trees[$i] = $item;
                                $stack[] = & $trees[$i];
                        } else {
                                // Add node to parent
                                $i = count($stack[$l - 1]['children']);
                                $stack[$l - 1]['children'][$i] = $item;
                                $stack[] = & $stack[$l - 1]['children'][$i];
                        }
                }
        }

        return $trees;
}