将PHP中的数组与值组合在一起

时间:2014-10-10 09:42:50

标签: php arrays loops multidimensional-array

考虑下面的多维数组:

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

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

)

如何组合它以使booking_type_id和value数组在一个具有相同值的数组中:

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

)

我已经尝试过array_merge和array_combine,但我无法保留密钥?我也试图循环并添加到一个新数组。

5 个答案:

答案 0 :(得分: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'] );

答案 1 :(得分:2)

您可以使用array_combine()这样的功能:

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

答案 2 :(得分: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'] );

答案 3 :(得分: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++;
    }
?>

答案 4 :(得分: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
    )

)