2011-08-16 23 views
0

これはかなり些細な疑問に思えるかもしれませんが、私の無知を許してください。まだ配列操作のハングアップを取得しています...キー/値から多次元への配列の変換

私は保存するために私のコントローラに配列をポストしている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 
     ) 
    ) 
) 

感謝。


EDIT:

私はちょうど私がそれを無視する必要があることを0>配列は、[ID]を持っている場合という事実=を省略実現しました。これが私の主要な障害でした。謝罪。私の編集が私の問題をより明確にすることを願っています。

を解決し、あなたの助けみんなありがとう。私は自分自身で解決策を考え出すことができました。ここに私が思いついたのがあります。このような

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++; 
      } 
     } 
    } 
} 

答えて

1

何かが動作しますが、必要がありますちょうどあなたの例:

$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 
    } 
} 
1
$main = Array ( 
     [788] => Array ([id] => 788) 
     [787] => Array ([id] => 787) 
     [786] => Array ([id] => 786) 
     [785] => Array ([id] => 785) 

     [value_1] => 0 

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

     [job_id] => 34 
) 

$analysed_date = $main['analysed_date']; 
$value1 = $main['value_1']; 

$result = array(); 
$i=0; 
foreach($main as $key=>$value) 
{ 
if(is_numeric($key) 
{ 
    $result[$i]=array(); 
    $result[$i]['id']=$key; 
    $result[$i]['value_1']=$value1; 
    $result[$i]['analysed_date']=$analysed_date; 
    $i++; 
} 
} 
関連する問題