Başka bir biçime dönüştürme diziler (PHP)

2 Cevap php

ben bu diziyi dönüştürmek istiyorum

 Array
(
    [2] => Array
        (
        )
    [4] => Array
        (
            [12] => Array
                (
                )
            [13] => Array
                (
                 [16] => Array
                    (
                    )
                )
        )
    [5] => Array
        (
        )
    [10] => Array
        (
        )
    [14] => Array
        (
        )
)

Bu biçime

Array
(
    [2] => 2
    [4] => Array
        (
            [0] => 12
            [13] => Array
                (
                    [0] => 16
                )
        )

    [5] => 5
    [10] => 10
    [14] => 14
)

can anybody help? thanks. [continued 16Mar2010]

onun değil

[2] => array

ancak

[2] => 2

o 1 çocuk veya daha fazla olan bir dizi ise, o zaman olurdu [4] => Array([12]=>12

giriş verileri

$a = array(2 => array(), 4 => array(12 => array(), 13 => array(16 => array())), 5 => array(), 10 => array(), 14 => array());

2 Cevap

function refactor($a){
  $result = array();
  foreach($a as $k => $v)
    $result[$k] = (is_array($v) && count($v) > 0) ? refactor($v) : $k;
  return $result;
}

$a = array(2 => array(), 4 => array(12 => array(), 13 => array()), 5 => array(), 10 => array(), 14 => array()); print_r($a); $b = refactor($a); print_r($b);

Üzgünüz, aynı olarak anahtarları ve değerleri için değil, iç dizi istediğini görmedim.

EDIT: Sorunuzu güncellenen sonra, ben ne gerek yapmak benim fonksiyonu düzenlenebilir:

function refactor($a, $rootNode = false){
  $result = array();
  foreach($a as $k => $v){
      if($rootNode){
          $result[$k] = (is_array($v) && count($v) > 0) ? refactor($v) : $k;
      }else{
          $result[] = (is_array($v) && count($v) > 0) ? refactor($v) : $k;      
      }
  }
  return $result;
}

$a = array(2 => array(), 4 => array(12 => array(), 13 => array(16 => array())), 5 => array(), 10 => array(), 14 => array());
print_r($a);
$b = refactor($a, true);
print_r($b);
foreach($ary as $k => $v)
  $result[$k] = $v ? array_keys($v) : $k;

Denenmemiş