Я делаю систему корзины покупок на основе сеанса, и мне нужна помощь с отображением массива из сеанса. Мой массив выглядит так:
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
и так далее.
Это возможно? Приглашаем вас опубликовать, если у вас есть лучшее представление о том, как я могу отображать товары в корзине. Мне просто нужно иметь возможность извлечь некоторые данные из базы данных, используя названия предметов, а затем сложить все цены предметов 🙂
может быть, вы можете использовать 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"];
Это оставит вас с массивом данных, которые вам нужны:
<?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']; ?>