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はコードが機能しないと述べているため(これはです)、例を作成しました

于 2013-02-15T21:16:08.460 に答える