【问题标题】:Combine array in PHP with values将 PHP 中的数组与值组合
【发布时间】:2014-12-05 10:41:54
【问题描述】:

考虑下面的多维数组:

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,但我不能让它保留密钥?我也尝试循环并添加到一个新数组中。

【问题讨论】:

  • 请显示您已经尝试过的代码——循环/添加到新数组应该可以工作;您的实现中可能只是存在错误。
  • 你能显示预期的数组结构吗?

标签: php arrays loops multidimensional-array


【解决方案1】:

你是如何使用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'] );

【讨论】:

  • 很高兴我能帮上忙! :)
【解决方案2】:

一个简单的解决方案是遍历 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】:

    你可以像这样使用array_combine()函数:

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

    【讨论】:

    • 可能是完成此任务的最简单方法。您只需确保每个数组中的元素数量相同。
    【解决方案4】:
    <?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++;
        }
    ?>
    

    【讨论】:

      【解决方案5】:
      $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
          )
      
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多