PHP:الدورة 2-الأبعاد مجموعة المسار المنتجات التي تم عرضها

StackOverflow https://stackoverflow.com/questions/810003

سؤال

أحاول إنشاء مجموعة إلى عرض آخر 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 الأسطر تحتاج إلى تغيير.

  1. ليس هناك حاجة اضافية مجموعة() حول array_unshift و array_pop.
  2. عند استخدام array_unshift كنت تدفع مجموعة من العناصر (غير معرف/رموز فردي) - أعتقد أنك تقصد array_unshift($RView, array($prodid,$name,...))
  3. ماذا لو $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]

على أمل أن يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top