PHP:الدورة 2-الأبعاد مجموعة المسار المنتجات التي تم عرضها
-
03-07-2019 - |
سؤال
أحاول إنشاء مجموعة إلى عرض آخر 5 منتجات العملاء قد ينظر إليها.
مجموعة 2 الأبعاد مجموعة مثل أدناه...
$RView= array( مجموعة( معرف => "1001", RefCode => "Ref_01", اسم => "Name_01" ), ...مجموعة( معرف => "1005", RefCode => "Ref_05", اسم => "Name_05" ) );
مجموعة القيم التي يتم استردادها من المنتجات سجلات و هي مصممة لتعمل على النحو التالي عندما يزور العملاء صفحة المنتج.
- الصفحة سوف تحقق إذا كانت الدورة مجموعة موجود
- إذا كان الجواب نعم ، صفيف متغير يتم إنشاؤه من الدورة الحالية
إذا لا, مجموعة جديدة يتم إنشاؤها. - مجموعة إضافة تفاصيل منتج جديد.
- مجموعة العد إذا كان هناك أكثر من 5 المنتجات الموجودة في الصفيف.
- إذا كان الجواب نعم ، فإنه سيتم إزالة أقدم.
إذا لا ينتقل إلى الخطوة التالية. - دورة إنشاء/تحديث من تنقيح مجموعة.
بلدي الحالي جهد المرفقة أدناه...
شكرا جزيلا على أي مساعدة.
<?php
session_start()
// Get or Create Array
IF (isset($_SESSION['sessRView'])) {
$RView = ($_SESSION['sessRView']); }
ELSE {
$RView = array(array());
}
// Append currently viewed Product to Array
array(array_unshift($RView, $row_rsPrd['PrdID'], $row_rsPrd['RefCode'], $row_rsPrd['Name']));
// Check if more than 5 products exist in Array, if so delete.
IF (sizeof($RView) > 5) {
array(array_pop($RView)); }
// Update Session for next page
$_SESSION['sessRView'] = $RView;
// Display Array
for ($row = 0; $row < 5; $row++)
{
echo "<ul>";
echo "<li><a href='?PrdID=".$RView[$row]["PrdID"]."'>".$RView[$row]["RefCode"]."</a> : ".$RView[$row]["Name"]."</li>";
echo "</ul>";
}
?>
المحلول
أنها أكثر أو أقل اليمين فقط 2 الأسطر تحتاج إلى تغيير.
- ليس هناك حاجة اضافية مجموعة() حول array_unshift و array_pop.
- عند استخدام array_unshift كنت تدفع مجموعة من العناصر (غير معرف/رموز فردي) - أعتقد أنك تقصد
array_unshift($RView, array($prodid,$name,...))
- ماذا لو $RView لا تملك 5 العناصر ؟ في حال كنت الحصول على معرف مجموعة من المؤشرات (التي قد تكون أو قد لا تظهر خطأ).تغييره إلى حلقة foreach:على سبيل المثال
foreach ($Rview as $prod) echo $prod['Name']...
يجب أن تعمل بعد إجراء هذه التغييرات.قد ترغب في تنظيف أسلوب الترميز قليلا, على الرغم :)
تحرير:أرى, عندما كنت في الرجوع إلى مجموعة في حلقة لا أعرف أن مجموعة لديها "ProdID" و "اسم" المؤشرات.عندما تقوم مجموعة لديك لتحديد المؤشرات باستخدام => المشغل.
إضافة المؤشرات إلى مجموعة عند array_unshift:
array_unshift($RView, array("ProdID" => $row_rsProd["ProdID"], "Name"...))
إذا row_rsProd ليست كبيرة جدا, يمكنك فقط تك كامل row_rsprod على $RView.
حتى تغيير array_unshift(...) فقط$RView[] = $row_rsProd
هذه الطريقة الفهارس محفوظة.- بدلا من ذلك يمكنك تغيير indicies في حلقة للمباراة.الآن مجموعة unshift على $RView 0-بناء - $RView[0][0] هو معرف المنتج عن المنتج الأول ، إلخ.
حتى تتمكن من تغيير الأشياء في حلقة foreach
echo "<li>..." $prod[0] $prod[1] $prod[2]
على أمل أن يساعد!