【问题标题】:Create new array using values from multidimensional array sharing values使用来自多维数组共享值的值创建新数组
【发布时间】:2013-01-31 22:32:14
【问题描述】:

我有这个多维数组:

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
}

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

【问题讨论】:

  • 你可以使用 foreach 使用一些逻辑来做到这一点:)
  • 我是新手... ^ 比如?

标签: php arrays multidimensional-array foreach


【解决方案1】:

嗯,这只是遍历数组。我真的不明白问题出在哪里。

$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),I made an example

【讨论】:

  • 确实有效。你甚至懒得去检查你的代码,反而是在撒谎。我现在很遗憾我什至试图帮助你。 Here 就是证明。它使用的代码与我在此处发布的完全相同。
  • 放松,我没有撒谎,我用过这个,但它没有用。双重和三重检查它。我尝试在以下行之后关闭 if 语句,但这不起作用。我尝试在以下两行之后关闭它,但没有奏效。感谢您的帮助,但我只为每个“foo”获得一个“bar”值
  • 但这不是 this 什么不起作用,而是你的代码。你必须看到它在我的页面上工作。所以,如果你真的确定你的代码没问题(这不太可能是真的),再问一个问题。不接受这一点并说我的代码不起作用不太可能对您有所帮助。
  • 公平的,我会给你检查批准
猜你喜欢
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
相关资源
最近更新 更多