使用多维数组共享值中的值创建新数组

时间:2013-02-15 21:09:17

标签: php arrays multidimensional-array foreach

我有这个多维数组:

array {
  [0]=>
  array(2) {
    [“foo”]=>
    int(138)
    [“bar”]=>
    int(127)
  }
  [1]=>
  array(2) {
    [“foo”]=>
    int(138)
    [“bar”]=>
    int(47)
  }
  [2]=>
  array(2) {
    [“foo”]=>
    int(138)
    [“bar”]=>
    int(13)
  }
  [3]=>
  array(2) {
    [“foo”]=>
    int(138)
    [“bar”]=>
    int(56)
  }
  [4]=>
  array(2) {
    [“foo”]=>
    int(154)
    [“bar”]=>
    int(77)
  }
  [5]=>
  array(2) {
    [“foo”]=>
    int(154)
    [“bar”]=>
    int(69)
  }
  [6]=>
  array(2) {
    [“foo”]=>
    int(154)
    [“bar”]=>
    int(70)
  }
  [7]=>
  array(2) {
    [“foo”]=>
    int(154)
    [“bar”]=>
    int(75)

对于foo的每个值都是相同的,我想创建一个新的数组,其中'foo'是$ key,并且该数组中每个相应的'bar'值(即:

array[138] {
    127
    47
    13
    56
}

任何帮助都会很棒。谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,这只是循环遍历数组。我真的不知道问题在哪里。

$new =array();
for($i=0; $i<count($array); $i++) {
    if(!isset($new[$array[$i]["foo"]]))    //Check for existence of "foo" stack
      $new[$array[$i]["foo"]] = array();   //Create new array, where "bar"s will be put in
    $new[$array[$i]["foo"]][] = $array[$i]["bar"];  //Put "bar" in corresponding "foo" stack
}

你甚至可以在这种情况下使用foreach,我避免使用它,使代码示例对于ocassion更改是友好的 因为OP声明代码不起作用(谎言<​​/ strong>),I made an example