0

我有这个多维数组:

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
}

任何帮助都是极好的。谢谢你。

4

1 回答 1

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,我避免使用它,以使代码示例对临时更改友好。
因为 OP 声明代码不起作用(即lie),所以我做了一个示例

于 2013-02-15T21:16:08.460 回答