繁体   English   中英

将数组转换为另一种格式(PHP)

[英]Converting arrays into another format (PHP)

我想转换这个数组

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

变成这种格式

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

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

有人可以帮忙吗? 谢谢。 [2010年3月16日续]

不是

[2] =>数组

[2] => 2

如果它是一个有1个或更多子代的数组,则它将是[4] => Array([12]=>12

输入数据为

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

foreach($ary as $k => $v)
  $result[$k] = $v ? array_keys($v) : $k;

未经测试

\n

 
 
 
  
  
  
 
  
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);

\n

抱歉,没有看到您希望内部数组的键和值不相同。

编辑:更新您的问题后,我编辑了我的功能以执行您需要的操作:

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);
<?php

$arr = array ( "2" => array ( ) , "4" => array ( "12" => array () , 13 => array () , ) , 5 => array () , 10=> array () , 14 => array() );

foreach ( $arr as $key => $val )
{
global $arr ;
if ( empty ( $val ) )
{
  unset($arr[$key]);
  $arr[$key]=$key;
}
}

print_r  ( $arr) ;

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM