重新排列 php 数组



我甚至不确定我们是否调用了transform,但是,假设我们有一个这样的数组:

一)

Array
(
    [id] => 532b436477936
    [name] => Record #1
    [created] => 20-03-2014
    [regions] => Array
    (
        [0] => Array
        (
            [id] => 532b3fcbf2353
            [name] => Region #2
            [created_at] => 1395343322
        )
        [1] => Array
        (
            [id] => 532b3fcbf2354
            [name] => Region #3
            [created_at] => 1395343323
        )
    )
)

我们希望像这样转换它:

二)

Array
(
    [0] => Array
    (
        [id] => 532b436477936
        [name] => Record #1
        [created] => 20-03-2014                
        [regions.id] => 532b3fcbf2353
        [regions.name] => Region #2
        [regions.created_at] => 1395343322
    )
    [1] => Array
    (
        [id] => 532b436477936
        [name] => Record #1
        [created] => 20-03-2014    
        [regions.id] => 532b3fcbf2354
        [regions.name] => Region #3
        [regions.created_at] => 1395343323
    )
)

我可以在代码方面得到一些帮助吗?

$actual = array(
            'id' => '532b436477936',
            'name' => 'Record #1',
            'created' => '20-03-2014',
            'regions' => array(
                            array('id' => '532b3fcbf2353', 'name' => 'Region #2'), 
                            array('id' => '532b3fcbf2354', 'name' => 'Region #3')
                        )
        );
var_dump($actual);
$desired = array(
            array(
                'id' => '532b436477936',
                'name' => 'Record #1',
                'created' => '20-03-2014',
                'regions.id' => '532b3fcbf2353',
                'regions.name' => 'Region #2',              
                ),
            array(
                'id' => '532b436477936',
                'name' => 'Record #1',
                'created' => '20-03-2014',
                'regions.id' => '532b3fcbf2354',
                'regions.name' => 'Region #3',  
            )           
);
var_dump($desired);

我可以打开一些灯来查看以将 A 转换为 B 吗?

$desired = array();
foreach($actual['regions'] as $region)
  {
    $desired[] = array(
            'id' => '532b436477936',
            'name' => 'Record #1',
            'created' => '20-03-2014',
            'region.id' => $region['id'],
            'region.name' => $region['name']);
  } 
$actual = array(
        'id' => '532b436477936',
        'name' => 'Record #1',
        'created' => '20-03-2014',
        'regions' => array(
                        array('id' => '532b3fcbf2353', 'name' => 'Region #2'), 
                        array('id' => '532b3fcbf2354', 'name' => 'Region #3')
                    )
    );

$desired = array();
foreach($actual as $actual_dummy => $a)
{
    foreach($a['regions'] as $Region_dummy => $r)
    {
        $desired[]=array("id" => $a['id'], 
                        "name" => $a['name'], 
                        "created" => $a['created'], 
                        "regions.id" => $r['id'], 
                        "regions.name" => $r['name']);
    }
}

试试这个:

$desired = array();
$basic = $actual;
unset($basic['regions']);
foreach($actual['regions'] as $key=>$val){
    foreach($val as $key2=>$val2) {
        $basic["$key.$key2"] = $val2;
    }
    $desired[] = $basic;
}

最新更新