Отображать элементы массива определенным образом

Я делаю систему корзины покупок на основе сеанса, и мне нужна помощь с отображением массива из сеанса. Мой массив выглядит так:

array(5) { [0]=> NULL [1]=> string(5) "TMRS1" [2]=> string(5) "TMRS2" [3]=> string(5) "TMRS1" [4]=> string(5) "TMRS3" }

Мне бы хотелось, чтобы скрипт подсчитывал дублирующиеся элементы и отображал их.

Например, TMRS1 будет установлен на $name1 (= TMRS1) и $quantity1 (= 2). Следующий пункт будет тогда $name2 а также $quantity2 и так далее.

Это возможно? Приглашаем вас опубликовать, если у вас есть лучшее представление о том, как я могу отображать товары в корзине. Мне просто нужно иметь возможность извлечь некоторые данные из базы данных, используя названия предметов, а затем сложить все цены предметов 🙂

2

Решение

может быть, вы можете использовать array_count_values ​​()

пример с php.net

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

Приведенный выше пример выведет:

Array
(
[1] => 2
[hello] => 2
[world] => 1
)

С массивом вы даете:

$shopping_cart = array("TMRS1","TMRS2","TMRS1","TMRS3");
$items_count = array_count_values($shopping_cart);

echo "Number of TMRS1 in the cart:".$item_count["TMRS1"];
2

Другие решения

Это оставит вас с массивом данных, которые вам нужны:

<?php

$tmrs = array(NULL, "TMRS1", "TMRS2", "TMRS1", "TMRS3");

foreach ($tmrs as $key => $val){
$duplicateArray[$key]['name'] = "TMRS" . $key; // only the name
$duplicateArray[$key]['quantity'] = (int) str_replace("TMRS", "", $val); // aquire only the value
}

print_r($duplicateArray);

?>

Это вернется:

Array
(
[0] => Array
(
[name] => TMRS0
[quantity] => 0
)

[1] => Array
(
[name] => TMRS1
[quantity] => 1
)

[2] => Array
(
[name] => TMRS2
[quantity] => 2
)

[3] => Array
(
[name] => TMRS3
[quantity] => 1
)

[4] => Array
(
[name] => TMRS4
[quantity] => 3
)

)

Затем вы можете вывести имя или значение следующим образом:

<?php echo $duplicateArray[2]['name']; ?>
0

По вопросам рекламы [email protected]