2014-10-27 3 views
2

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

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 и так далее.

Возможно ли это? Вы более чем можете отправить сообщение, если у вас есть лучшая идея о том, как я могу отображать предметы в корзине. Я просто должен быть в состоянии вывести некоторые данные из базы данных, используя имя пунктов, а затем сложить все цены из пунктов :)

+0

Почему количество TMRS1 1? Я вижу это дважды – FuzzyTree

+0

@FuzzyTree извините, моя вина. Теперь это исправлено :) – FrossBlock

+0

TMRS - это элемент, а количество рядом - количество? – Math

ответ

2

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

пример из PHP. чистая

<?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"]; 
+0

Это не отвечает на мой вопрос. Мне нужен сценарий, чтобы дать каждому элементу $ name (number) и $ количество (число). – FrossBlock

0

Это оставит вас с массивом данных, вам необходимо:

<?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

К сожалению, этот элемент не всегда называется TMRS (number), поэтому я не могу это использовать, но спасибо за ваш комментарий :) – FrossBlock

Смежные вопросы