2013-11-21 251 views
-1

我想在數組之間插入一個值。兩個數組都是動態生成的。這裏是一個示例代碼在數組之間插入一個值

$orig_array = Array 
(
    [r0] => Array 
     (
      [c0] => Array 
       (
        [field] => tab 
        [label] => First Name 
        [fieldid] => tab1 
       ) 
     ) 

    [r1] => Array 
     (
      [c0] => Array 
       (
        [field] => text 
        [label] => email 
       ) 
     ) 

    [r2] => Array 
     (
      [c0] => Array 
       (
        [field] => text 
        [label] => state 
       ) 

     ) 
) 

$insert_array = Array 
       (
        [field] => text 
        [label] => First Name 
        [fieldid] => fname 
        [tabid] => tab1 
       ) 

現在我想插入第二個數組之後的r1節點。第二個數組在特定位置插入有兩個條件。 1.該字段是選項卡字段(field = tab)和2.第二個數組中有一個選項卡id,該選項卡id應該對應於第一個數組中的fieldid。

+1

ok聽起來不錯!你有什麼嘗試? – PeeHaa

+0

你需要維護'r [num]'鍵嗎? –

+0

@PeeHaa:我正在嘗試array_splice。 – Aditya

回答

0

它只管理行,但你可以爲列做同樣的:

$orig_array=array_combine(range(0,count($orig_array)-1),$orig_array); 

foreach($orig_array as $key=>$row) 
    if($yourCondition==TRUE) 
     array_splice($orig_array, $key, 0, [["c0"=>$insert_array]]); 
//you can manage your insertions here, 
//and work on a "classical" multi-dimensional array (with numeric keys) 
//wich is far more easy 

$final_array=[]; 
foreach($orig_array as $key=>$row) 
     $final_array["r".$key]=$row; 

編輯: 代碼更新,其中$ yourCondition是你的情況,我沒有很好的理解。由於它在foreach循環中,因此您可能需要執行if($row["c0"]["something"]==$something),其中某處是您的標識或您的選項卡。

+0

謝謝。我也在研究這種方法,但在這裏我不知道將要插入的數組的位置是什麼。它僅取決於新數組是特定數組節點的一部分的條件。 – Aditya

+0

@Aditya看起來像這樣的情況是什麼? '$ newNode = 'R2';'?你能用這段代碼更新你的問題嗎? – Pierre

+0

@Aditya我編輯了我的答案。 – Pierre

0

如果你只是重寫數組該怎麼辦?

$final_array = array(); 
foreach($orig_array as $key=>$data) 
{ 
    $final_array[$key] = $data; 

    if($key == 'r1') 
     $data['r1'] = $insert_array; 
} 
+0

@Raffaela:謝謝。我會試試這個。 – Aditya