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

问题描述:

我有这样的多维数组:创建使用多维数组共享值的新数组值

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的每一个值是一样的,我想创建一个“富”是$键的新阵而阵列中的每个及其相应的“酒吧”的值(即:。

array[138] { 
    127 
    47 
    13 
    56 
} 

任何帮助将是真棒,谢谢

+1

你可以使用foreach使用一些逻辑:) – 2013-02-15 21:12:14

+0

我是新来的... ^如? – JohnSchaum 2013-02-15 23:17:02

好吧,这只是通过数组循环我真的不明白哪里是问题。

$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

+0

^没有工作 – JohnSchaum 2013-02-15 23:15:53

+0

确实有效。你甚至懒得检查你的代码,而不是你说谎。我现在很后悔,甚至试图帮助你。 [Here](http://u8.8u.cz//crap/arraylooper1.php)就是它的证明。它使用了和我在这里发布的相同的代码。 – 2013-02-15 23:32:34

+0

放松,我不撒谎,我用这个,它不起作用。双重和三重检查它。我尝试关闭下面一行之后的if语句,但这不起作用。我尝试关闭它后,下面两行,没有工作。我很感激帮助,但是我只为每个'foo'获得一个'bar'值。 – JohnSchaum 2013-02-16 00:06:17