Basit bir PHP dizi tuşları ile bir çok-boyutlu bir dizi oluşturma

0 Cevap php

Ben her belge (kenarlarına kökünden yakın 0) kendi sırayla yapısal değere sahip yönleriyle başka basit bir tek-boyutlu bir dizi (basit metinsel etiketler belgeye ekli) sahip belgelerin bir dizi var. Ben bu diziyi geçme yaşıyorum ve bir ağaç yapısı gibi bir çok-boyutlu bir dizi oluşturmak istiyorum. Yani, bu belgelerden sadece biri bu fragmanın gibi bir şey olan;

Array ( 'document-001' => Array (
   Array ( 'facets' => array (
      'Public - Policy and Procedures',
      'Employment Services Manual',
      'Section 02 - Recruitment & Selection',
   )
   ... many more here ...
) ;

Bunu istiyorum;

Array
(
    [Public - Policy and Procedures] => Array (
            [Administration Manual] => Array ( )
            [Corporate Governance Manual] => Array ( )
            [Food Services Manual] => Array ( )
            [Charter Manual] => Array ( )
            [Infection Control Manual] => Array ( )
            [Leisure and Lifestyle Manual] => Array ( )
            [Employment Services Manual] => Array (
                    [Section 09 - Termination & Resignation] => Array ( )
                    [Section 02 - Recruitment & Selection] => Array ( )
                    [Section 10 - Security] => Array ( )
            )
            [Environmental Sustainability Manual] => Array (
                    [Property - New Development & Refurbishment Policy 5.5] => Array ( )
            )
     )

$ Dizin benim yeni çok boyutlu dizi nerede benim geçerli çözüm, son derece çirkin olduğunu;

// Pick out the facets array from my larger $docs array
$t = $docs['facets'] ;
$c = count ( $t ) ;

if      ( $c == 2 ) $index[$t[0]] = array() ;
else if ( $c == 3 ) $index[$t[0]][$t[1]] = array() ;
else if ( $c == 4 ) $index[$t[0]][$t[1]][$t[2]] = array() ;
else if ( $c == 5 ) $index[$t[0]][$t[1]][$t[2]][$t[3]] = array() ;
else if ( $c == 6 ) $index[$t[0]][$t[1]][$t[2]][$t[3]][$t[4]] = array() ;
else if ( $c == 7 ) $index[$t[0]][$t[1]][$t[2]][$t[3]][$t[4]][$t[5]] = array() ;

Elbette daha iyi bir yolu var. Ben çeşitli dizi fonksiyonları ile troddled ettik, ama hiçbir şey bariz bir çözüm olarak öne çıkıyor. Burada sorun PHP'nin kendisi sözdizimi karşı olduğunu dynamicism savaşları olduğunu. Ben tabii bir OO çözüm oluşturabilir, ama bu gerçekten (ben muhtemelen gerektiğini bile) oraya gitmek istemiyorum böyle basit ve küçük bir hareket olduğunu.

Düşünceler?

0 Cevap