2014-10-10 60 views
1

考慮下面的多維度數組:結合數組PHP中的值

Array 
(
[submit] => yes 
[id] => 
[booking_id] => 
[booking_type_id] => Array 
    (
     [0] => 171 
     [1] => 58 
    ) 

[value] => Array 
    (
     [0] => 23 
     [1] => 46 
    ) 

) 

如何合併它,以便使booking_type_id和值陣列在一個陣列相同的價值觀:

Array 
(
    [new_values] => Array 
     (
      [171] => 23 
      [58] => 46 
     ) 

) 

我已經嘗試array_merge和array_combine,但我不能讓它保持鍵?我也嘗試循環並添加到一個新的數組。

+0

請顯示您已經嘗試的代碼 - 通過/添加到新陣列的循環應該可以工作;你的實現中可能只是一個錯誤。 – 2014-10-10 09:45:18

+0

你能展示預期的數組結構嗎? – 2014-10-10 09:46:25

回答

3

你是怎麼用的array_combine。這應該適用於你想要的結構。實施例下面:

$multi = array(
    'submit'   => 'yes', 
    'id'    => '',  
    'booking_id'  => '', 
    'booking_type_id' => array(171, 58), 
    'value'   => array(23, 46), 
); 

$combined = array_combine($multi['booking_type_id'], $multi['value']); 
+0

完美!謝謝! – 2014-10-10 09:56:24

+0

高興我可以幫忙! :) – 2014-10-10 09:56:54

1

一個簡單的解決方案將是遍歷booking_type_id陣列和在一個新的數組相關的那些值:

$array_1['booking_type_id'] = array(171,58); 
$array_1['value'] = array(23,46); 

$array_2 = array(); // new combined array 

foreach ($array_1['booking_type_id'] as $key => $value) { 
    $array_2[$value] = $array_1['value'][$key]; 
} 

並將結果:

Array 
(
    [171] => 23 
    [58] => 46 
) 

更新:

正如其他人已經指出的那樣,你也可以完成相同的同array_combine()

$array_2 = array_combine($array_1['booking_type_id'], $array_1['value']); 
2

可以使用array_combine()功能如下:

$array['new_values'] = array_combine($array['booking_type_id'], $array['new_values']); 
+0

可能是最簡單的方法來實現這一點。你只需要確定每個數組中元素的數量是相同的。 – jpicaude 2014-10-10 09:55:44

0
<?php 
    $i = 0; 
    $new_values = array(); 
    while($i < count($your_array['booking_type_id'])) 
    { 
     $new_values['new_values'][$your_array['booking_type_id'][$i]] = 
$your_array['value']; 
     $i++; 
    } 
?> 
0
$arr = array(
     'submit' => "yes", 
     'id' => NULL, 
     'booking_id' => NULL, 
     'booking_type_id' => array(
       0 => 171, 
       1 => 58 
     ), 
     'value' => array(
       0 => 23, 
       1 => 46 
     ) 

); 


$new_arr = array(); 
foreach($arr['booking_type_id'] as $key=>$value){ 

    $new_arr[$value] = $arr['value'][$key]; 

} 
$arr['new_values'] = $new_arr; 

echo"<pre>";print_r($arr); 

結果將是

Array 
(
[submit] => yes 
[id] => 
[booking_id] => 
[booking_type_id] => Array 
    (
     [0] => 171 
     [1] => 58 
    ) 

[value] => Array 
    (
     [0] => 23 
     [1] => 46 
    ) 

[new_values] => Array 
    (
     [171] => 23 
     [58] => 46 
    ) 

)