Php 将数组从键/值转换为多维

Php 将数组从键/值转换为多维,php,arrays,cakephp,Php,Arrays,Cakephp,这似乎是一个微不足道的问题,请原谅我的无知。仍然掌握数组操作的诀窍 我有一个CakePHP应用程序,它正在向我的控制器发送一个要保存的数组。我需要以某种方式重新格式化发送的数组,以便通过Cake的保存行为对其进行正确处理 发布的数组是: Array ( [788] => Array ( [id] => 788 ) [787] => Array ( [id] => 787 ) [786] => Array (

这似乎是一个微不足道的问题,请原谅我的无知。仍然掌握数组操作的诀窍

我有一个CakePHP应用程序,它正在向我的控制器发送一个要保存的数组。我需要以某种方式重新格式化发送的数组,以便通过Cake的保存行为对其进行正确处理

发布的数组是:

Array ( 
        [788] => Array ( [id] => 788 )  
        [787] => Array ( [id] => 787 )  
        [786] => Array ( [id] => 0 )  
        [785] => Array ( [id] => 0 )  

        [value_1] => 0 

        [analysed_date] => Array ( 
           [month] => 08 
           [day] => 16 
           [year] => 2011 
        )  

        [job_id] => 34 
) 
Array ( 
    [0] => Array ( 
        [id] => 788 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
    [1] => Array ( 
        [id] => 787 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
)
所需阵列:

Array ( 
        [788] => Array ( [id] => 788 )  
        [787] => Array ( [id] => 787 )  
        [786] => Array ( [id] => 0 )  
        [785] => Array ( [id] => 0 )  

        [value_1] => 0 

        [analysed_date] => Array ( 
           [month] => 08 
           [day] => 16 
           [year] => 2011 
        )  

        [job_id] => 34 
) 
Array ( 
    [0] => Array ( 
        [id] => 788 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
    [1] => Array ( 
        [id] => 787 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
)
谢谢你抽出时间来看我


编辑:

Array ( 
        [788] => Array ( [id] => 788 )  
        [787] => Array ( [id] => 787 )  
        [786] => Array ( [id] => 0 )  
        [785] => Array ( [id] => 0 )  

        [value_1] => 0 

        [analysed_date] => Array ( 
           [month] => 08 
           [day] => 16 
           [year] => 2011 
        )  

        [job_id] => 34 
) 
Array ( 
    [0] => Array ( 
        [id] => 788 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
    [1] => Array ( 
        [id] => 787 
        [value_1] => 0 
        [analysed_date] => Array ( 
            [month] => 08 
            [day] => 16 
            [year] => 2011 
        )  
    )  
)
我刚刚意识到我忽略了一个事实,即如果数组的[id]=>0,则需要忽略它。这是我的主要绊脚石。道歉。我希望编辑能更好地澄清我的问题

已解决

谢谢你们的帮助。我自己能想出解决办法。这是我想到的

foreach($org_array as $key => $value){
    if(is_array($value)){
        if(isset($value['id'])){
            if($value['id'] != 0) {
                $data[$i] = array(
                    'id' => $value['id'],
                    'value_1'=> $value_1,
                    'analysed_date' => $date
                );
                $i++;
            }
        }   
    }
}   

类似这样的方法应该有效,但仅举个例子:

$array_keys = array_keys($org_array);
$new_array = array();
foreach ($array_keys as $key)
{
  if (is_int($key))
  {
    $new_array[] = array(
        "id" => $key,
        "value1" => $org_array["value1"],
        "analysed_date" => $org_array["analysed_date"]
      );
    // you might want to loop throught the original array to get all non-integer key values instead of hard-coding it
  }
}