【问题标题】:Re-arrange a php array?重新排列一个php数组?
【发布时间】:2015-04-03 04:45:15
【问题描述】:

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

A)

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

我们希望这样改造它:

B)

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 吗?

【问题讨论】:

  • php.net/foreach 将是一个很好的起点......
  • 循环遍历数组 A 并重新分配给一个新数组,它将成为 B?我不明白你怎么能做到这一点......
  • 这不是您要寻找的转换,而是扁平化stackoverflow.com/questions/9546181/…
  • 谢谢。 @DaveGoten - 我不知道扁平化这个词。谢谢。
  • A中的Foreach区域在数组B中创建一个具有相同属性的数组+添加A的根属性?

标签: php arrays multidimensional-array


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:
    $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']);
        }
    }
    

    【讨论】:

      【解决方案3】:
      $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']);
        } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        • 2023-03-27
        • 1970-01-01
        • 2016-06-20
        • 2020-02-21
        • 1970-01-01
        相关资源
        最近更新 更多