【问题标题】:Combine array in php [closed]在php中组合数组[关闭]
【发布时间】:2013-06-01 09:36:55
【问题描述】:

我有数组

array
  0 => 
    array
      2 => int 50000
  1 => 
    array
      2 => int 30000
  2 => 
    array
      1 => int 25000
  3 => 
    array
      1 => int 20000
  4 => 
    array
      1 => int 10000

我需要创建数组结果是:

array
  2 => int 50000
  2 => int 30000
  1 => int 25000
  1 => int 20000
  1 => int 10000

谢谢大家。 抱歉,我的英语很差:(

【问题讨论】:

  • 你不能,因为在 PHP 中,一个数组不能多次拥有同一个键。你最终会得到array(2 => 30000, 1 => 10000)
  • 你的预期输出是错误的。

标签: php arrays


【解决方案1】:

PHP 不允许数组具有相同的键。这将显示 php 将如何处理一个 foreach 循环,该循环将数组重写为具有所需键和值的新数组

$array = array(
  0 => 
    array(
      2 => 50000),
  1 => 
    array(
      2 => 30000),
  2 => 
    array(
      1 => 25000),
  3 => 
    array(
      1 => 20000),
  4 => 
    array(
      1 => 10000)
);

$new_array = array();
foreach($array as $data)
{
    foreach($data as $key => $val)
    {
        $new_array[$key] = $val;
    }
}
var_dump($new_array);

这将输出

array(2) {
  [2]=>
  int(30000)
  [1]=>
  int(10000)
}

Live Sample

正如您所看到的,每个循环上的键都被覆盖,因为它们是相同的,值也是相同的,我认为您可以使用上述函数让一个一级数组从 $new_array 中删除键

foreach($data as $key => $val)
{
    $new_array[] = $val;
}

Live Sample

【讨论】:

    【解决方案2】:

    这就是你想要的(不保留子键,因为你不能有多个元素具有相同的键):

    $flat_array = array_map('current', $array);
    

    在这里试试:http://codepad.org/1h7mKbqe

    【讨论】:

    • 同一个键在哪里!?数组([0] => 50000 [1] => 30000 [2] => 25000 [3] => 20000 [4] => 10000)
    • 这是获取第一个元素的简单方法,+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多