PHP: Oturum 2-Boyutlu Array - Track Ürünler İzlenenler

1 Cevap php

Ben bir müşteri görüntüledi son 5 ürünlerini görüntülemek için bir dizi oluşturmak için çalışıyorum.

Dizi aşağıdaki gibi bir 2 boyutlu bir dizidir ...

$RView= array( array( ID => "1001", RefCode => "Ref_01", Name => "Name_01" ), ... array( ID => "1005", RefCode => "Ref_05", Name => "Name_05" ) );

Dizi değerleri ürünleri kayıt alınır ve müşteri ürün sayfasını ziyaret ettiğinde şöyle çalışacak şekilde tasarlanmıştır.

  • Oturum Array varsa Page kontrol edecek
  • If yes, an array variable is created from existing Session
    If no, a new array is created.
  • Dizi yeni ürün detay ekleyeceğiz.
  • 5'ten fazla varolan ürün dizide varsa dizi sayacaktır.
  • If yes, it will remove the oldest.
    If no, moves to next step.
  • A Oturum revize Array güncellenen / oluşturulur.

My current effort is attached below...
Many thanks for any help.

    <?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>";
    }
    ?>

1 Cevap

Daha fazla ya da daha az doğru - sadece 2 satır değiştirilmesi gerekir.

  1. Array_unshift ve array_pop çevresinde ekstra dizi () için gerek yok.
  2. Eğer öğeleri bir dizi itiyorsun array_unshift kullandığınızda (id / kodları tek tek değil) - Ne demek düşünüyorum array_unshift($RView, array($prodid,$name,...))
  3. What if $RView doesn't have 5 elements? In that case you're accessing undefined array indices (which may or may not show an error). Change it to a foreach loop: e.g.
    foreach ($Rview as $prod) echo $prod['Name']...

Bu değişiklikleri yaptıktan sonra çalışması gerekir. Eğer olsa, kodlama stili biraz temizlemek isteyebilirsiniz :)


EDIT: döngü için dizi "prodID" ve "Ad" endeksleri olduğunu bilmiyor diziyi baþvurduðunuzu Oh, ben görüyorum. Bir dizi yaptığınızda => operatörünü kullanarak dizinleri tanımlamak zorunda.

  • Add indexes to the array when you array_unshift:
    array_unshift($RView, array("ProdID" => $row_rsProd["ProdID"], "Name"...))

  • If row_rsProd isn't too big, you can just tack the entire row_rsprod onto $RView.
    so change array_unshift(...) to just $RView[] = $row_rsProd
    This way the indexes are preserved.

  • Alternatively you can change the indicies in the for loop to match. Right now the array you unshift onto $RView is 0-based - $RView[0][0] is the product ID for the first product, etc.
    So you can change the stuff in the foreach loop to
    echo "<li>..." $prod[0] $prod[1] $prod[2]

Umarım ki olur!