Имам този многоизмерен масив:
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" е ключът $ и всяка от съответните му "bar" стойности в този масив (т.е.:
array[138] {
127
47
13
56
}
Всяка помощ би била страхотна. Благодаря ти.
Отговори:
0 за отговор № 1Е, това е просто looping чрез масиви. Аз наистина не знам къде е проблемът.
$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 в този случай, избягвах го, за да направя примерен код, който е приятелски настроен към промените.
Тъй като ОП заявява, че кодът не работи (което е лъжа), Направих пример.