Ich habe ein Array mit mehreren Elementen. Ich möchte nur die 10 neuesten Werte beibehalten. Also kehre ich das Array in einer Schleife um und überprüfe, ob das Element innerhalb des ersten 10 Bereichs liegt und wenn nicht, lösche ich das Element vom Array.Array mit nur 10 letzten Werten
Nur Problem ist, dass die Unset nicht funktioniert. Ich verwende den Schlüssel, um das Element zu deaktivieren, aber irgendwie funktioniert das nicht. Das Array wächst weiter. Irgendwelche Ideen?
$currentitem = rand(0,100);
$lastproducts = unserialize($_COOKIE['lastproducts']);
$count = 0;
foreach(array_reverse($lastproducts) as $key => $lastproduct) {
if ($count <= 10) {
echo "item[$key]: $lastproduct <BR>";
}
else {
echo "Too many elements. Unsetting item[$key] with value $lastproduct <BR>";
unset($lastproducts[$key]);
}
$count = $count + 1;
}
array_push($lastproducts, $currentitem);
setcookie('lastproducts', serialize($lastproducts), time()+3600);
sidente: mind markieren alle anderen Fragen als gelöst, diejenigen, die Ihnen Lösungen gegeben haben? Andernfalls werden die Leute denken, dass sie nicht gelöst sind und mehr Antworten posten. –
Überprüfen Sie http://StackOverflow.com/Questions/5468912/PHP-Get-the-last-3-Elements-of-an-array oder http://StackOverflow.com/Questions/3591867/how-to-get- das-last-n-artikel-in-einem-php-array-als-ein anderes-array –
@SougataBose Ich würde genau dasselbe vorschlagen. Warum nicht ['array_slice()'] (http://php.net/manual/en/function.array-slice.php) oder ['array_splice()'] verwenden (http://php.net/manual/ en/function.array-splice.php)? Auf diese Weise ist es nicht notwendig, das Umkehrfeld zu durchlaufen, was den Prozess komfortabler und effizienter macht. – px06