ホームページ  >  記事  >  バックエンド開発  >  配列再編成コードを探しています

配列再編成コードを探しています

WBOY
WBOYオリジナル
2016-06-23 14:22:06923ブラウズ

アレイの再編成

私は次のように配列を持っています:

[0] => b
[1] => array(=>;f
?[0] => array(
>
$arr=array(    '0' => Array    (        'size' => 123,        'path' => Array            (                '0' => 'a',                '1' => 'b',                '2' => 'c',                '3' => 'abc',            )    ),    '1' => Array    (        'size' => 456,        'path' => Array            (                '0' => 'd',                '1' => 'e',                '2' => 'f',                '3' => 'def',            )    ));$ar=array();foreach($arr as $k=>$v){     $ar[$k][$v['path'][0]][$v['path'][1]][$v['path'][2]]['size']=$v['size'];	 $ar[$k][$v['path'][0]][$v['path'][1]][$v['path'][2]]['name']=$v['path'][3];}print_r($ar);


$arr=array(    '0' => Array    (        'size' => 123,        'path' => Array            (                '0' => 'a',                '1' => 'b',                '2' => 'c',                '3' => 'abc',            )    ),    '1' => Array    (        'size' => 456,        'path' => Array            (                '0' => 'd',                '1' => 'e',                '2' => 'f',                '3' => 'def',            )    ));$ar=array();foreach($arr as $k=>$v){     $ar[$k][$v['path'][0]][$v['path'][1]][$v['path'][2]]['size']=$v['size'];	 $ar[$k][$v['path'][0]][$v['path'][1]][$v['path'][2]]['name']=$v['path'][3];}print_r($ar);


$arr 配列の各要素のパス下の要素の数は、上記のように 4 つしかない場合もあれば、1 つまたは 2 つしかない場合もあります。 N があるかもしれません。

$ar = array(  '0' => Array(    'size' => 123,    'path' => Array(      '0' => 'a',      '1' => 'b',      '2' => 'c',      '3' => 'abc',      )    ),  '1' => Array(    'size' => 456,    'path' => Array(      '0' => 'd',      '1' => 'e',      '2' => 'f',      '3' => 'def',      )    ));foreach($ar as $item) {  $t = array();  $p =& $t;  foreach($item['path'] as $i=>$k) {    if(strlen($k) > 1) { //注      $item['path'] = $k;      $p = $item;      break;    }    $p[$k] = array();    $p =& $p[$k];    unset($item['path'][$i]);  }  $res[] = $t;}print_r($res);/*注:这个结束条件太牵强,但你又没有给出结束条件,只能观察结果勉强为之不过是个引用的练习罢了*/
Array(    [0] => Array        (            [a] => Array                (                    [b] => Array                        (                            [c] => Array                                (                                    [size] => 123                                    [path] => abc                                )                        )                )        )    [1] => Array        (            [d] => Array                (                    [e] => Array                        (                            [f] => Array                                (                                    [size] => 456                                    [path] => def                                )                        )                )        ))


ありがとう、私は PHP にあまり詳しくありません
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。