|
|
|
| Второй день уже бьюсь - ничего не получается. Помогите, пожалуйста.
Суть проблемы.
Есть многомерный ассоциативный" массив. Вот кусок этого масства -
$shop = > Array
(
[vendor] => Array
(
[0] => Array ( [id] => 156, [vendor] => APC ) ,
[1] => Array ( [id] => 143, [vendor] => Canon ),
[2] => Array ( [id] => 73, [vendor] => Toshiba ),
[3] => Array ( [id] => 73, [vendor] => Toshiba ),
[4] => Array ( [id] => 156, [vendor] => APC ) ,
[5] => Array ( [id] => 143, [vendor] => Canon ),
[6] => Array ( [id] => 69, [vendor] => Sony ),
[7] => Array ( [id] => 157, [vendor] => Powercom ),
[8] => Array ( [id] => 69, [vendor] => Sony )
)
);
|
Каким образом удалить из этого массива все повторяющиеся элементы? Вобщем, что бы получился такой массив -
$shop = > Array
(
[vendor] => Array
(
[0] => Array ( [id] => 156, [vendor] => APC ) ,
[1] => Array ( [id] => 143, [vendor] => Canon ),
[2] => Array ( [id] => 73, [vendor] => Toshiba ),
[3] => Array ( [id] => 69, [vendor] => Sony ),
[4] => Array ( [id] => 157, [vendor] => Powercom ),
)
);
|
Подскажите, пожалуйста, как можно решить эту задачу? | |
|
|
|
|
|
|
|
для: simbel
(13.08.2007 в 21:02)
| | array_unique(array);
стандартная функция. используйте её и цикл | |
|
|
|
|
|
|
|
для: Futurer
(13.08.2007 в 21:17)
| | Я уже всё что мог перепробовал и с помощью этой функции тоже пытался решить эту задачку.
Я понимаю как она работает с одномерным массивом, но с многомерным у меня ничего не получается. Каким образом использовать её в цикле, в каком цикле лучше? | |
|
|
|
|
|
|
|
для: simbel
(13.08.2007 в 21:37)
| | Плохой массив у Вас.
Вот это:
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
|
никакой смысловой нагрузки не несёт. Заменили бы на id => vendor. | |
|
|
|
|
|
|
|
для: simbel
(13.08.2007 в 21:37)
| | Поскольку у вас повторяются значения попарно:
[2] => Array ( [id] => 73, [vendor] => Toshiba ),
[3] => Array ( [id] => 73, [vendor] => Toshiba ),
то создайте из массива 2 одномерных, потом произведите операцию и оставьте только уникальные элементы, а потом используя оставшиеся, уникальные ID соберите из исходного массива новый, уже без лишних элементов. | |
|
|
|
|
|
|
|
для: Futurer
(14.08.2007 в 00:19)
| | Сделал слеующим образом -
function criateVendor($curoffer)
{
for($i = 0; $i < count($curoffer); $i++)
{
$id = $curoffer[$i]['vendor']['id'];
$vend = $curoffer[$i]['vendor']['vendor'];
$shop['vendor'][$id] = $vend;
}
return $shop['vendor'];
}
|
В результате получается массив -
$shop = > Array
(
[vendor] => Array
(
[156] => APC
[73] => Toshiba
[143] => Canon
[69] => Sony
[157] => Powercom
)
);
|
Вобщем-то и такой результат подходит тоже, хотя лучше всё же если бы масив получался таким же как я описал в превом сообщении. Но так у меня, сколько не эксперементировал, не получается.
Всем спасибо за подсказки. | |
|
|
|
|
|
|
|
для: simbel
(14.08.2007 в 03:21)
| | Разберите вручную
$shop = Array
(
"vendor" => Array(
0 => Array ( "id" => 156, "vendor" => APC ) ,
1 => Array ( "id" => 143, "vendor" => Canon ),
2 => Array ( "id" => 73, "vendor" => Toshiba ),
3 => Array ( "id" => 73, "vendor" => Toshiba ),
4 => Array ( "id" => 156, "vendor" => APC ) ,
5 => Array ( "id" => 143, "vendor" => Canon ),
6 => Array ( "id" => 69, "vendor" => Sony ),
7 => Array ( "id" => 157, "vendor" => Powercom ),
8 => Array ( "id" => 69, "vendor" => Sony )
)
);
$newShop = array("vendor" => array());
foreach($shop["vendor"] as $arr)
{
if(!in_array($arr, $newShop["vendor"]))
{
$newShop["vendor"][] = $arr;
}
}
|
| |
|
|
|
|
|
|
|
для: simbel
(13.08.2007 в 21:37)
| | Ну и дураком я был тогда - не мог выполнить простейших действий над массивом. Одним словом был совсем зелёный. Другое дело сейчас. | |
|
|
|
|
|
|
|
для: simbel
(23.11.2007 в 00:14)
| | Ну и дураком я был тогда - не мог выполнить простейших действий над массивом. Одним словом был совсем зелёный. Другое дело сейчас. | |
|
|
|
|
|
|
|
для: simbel
(13.08.2007 в 21:02)
| | Ну и дураком я был тогда - не мог выполнить простейших действий над массивом. Одним словом был совсем зелёный. Другое дело сейчас. | |
|
|
|