2016-06-09 38 views
-1

我的问题看起来可能非常愚蠢,但我真的被困在这里。

我知道$ _SESSION是全球变量但我似乎无法知道如何检索它存储的值。

例如:

<?php 
if(isset($_SESSION["cart_products"])) 
{ 
    foreach ($_SESSION["cart_products"] as $cart_itm) 
    { 
     //set variables to use in content below 
     $product_name = $cart_itm["product_name"]; 
     $product_code = $cart_itm["product_code"]; 

     echo '<p>'.$product_name.'</p>'; 
     echo '<p><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></p>'; 
    } 
} 

echo $_SESSION["cart_products"]; 
?> 

在这里你可以看到,$_SESSION["cart_products"]拥有一定的价值(信息,如产品名称,产品代码等)。现在,问题是我只想回显存储在$_SESSION["cart_products"]中的所有产品名称

由于这是一个购物车清单,它包含多个产品的详细信息。但是,当我回显$product_name时,它只显示列表中最后一个产品的名称。并回显出$_SESSION["cart_products"]给出array to string错误。

请告诉我如何列出由,分隔的所有产品名称。

任何帮助将不胜感激。 谢谢先进。 PS:我已经试过使用implode()函数。

+0

你不能回应一个数组。在字符串上下文中输出数组,例如'$ foo = array(); echo $ foo'只会产生文本文本'Array'。你究竟如何/在哪里输出'$ product_name'?一旦您的循环退出,'$ product_name'将包含您打开的最后一个项目,然后不会再更改。 –

+0

使用print_r($ _ SESSION [“cart_products”])函数显示所有数据...不回显,因为$ _SESSION [“cart_products”]是数组。 –

回答

0

最后的编辑版本,我得到了答案,我与@Christophe Ferreboeuf的帮助下查询。但是,仍需要进行一些修改。

下面是更正后的代码:

$allProductName = ''; 
$prefix = ''; 
foreach ($_SESSION["cart_products"] as $cart_itm) 
{ 
    $allProductName .= $prefix . '"' . $cart_itm["product_name"]. '"'; 
    $prefix = ', '; 
} 
echo $allProductName; 
0

用于显示所有分隔的产品名称,使用此代码。

$allProductName = ''; 
$prefix = ''; 
foreach ($_SESSION["cart_products"] as $cart_itm) 
{ 
    $allProductName .= $prefix . '"' . $product_name. '"'; 
    $prefix = ', '; 
} 
echo $allProductName; 
+1

您的解决方案仅打印**最后一个产品**名称。如果我的列表中有3个不同的项目,那么它将打印最后一个产品名称3次。 – Adictonator

+0

@Adictonator如果您发现需要修改此答案的代码才能使其正常工作,则应将其作为自己的答案发布,而不是编辑此答案。 – TylerH

+0

你能告诉我print_r($ _ SESSION [“cart_products”])的输出吗??? –

0

这里是你的代码

<?php 
    //you need to start session first 
    session_start(); 
    $item = ["product_name" => "BMW", "product_code" => "540M"]; 
    $list = array($item, $item); 

    // Assuming you session list 
    $_SESSION[ "cart_products" ] = $list; 

    if(isset($_SESSION["cart_products"])) { 
     foreach ($_SESSION["cart_products"] as $cart_itm) { 
      //set variables to use in content below 
      $product_name = $cart_itm["product_name"]; 
      $product_code = $cart_itm["product_code"]; 

      echo '<p>'.$product_name.'</p>'; 
      echo '<p><input type="checkbox" name="remove_code[]" value="'.$product_code.'" /></p>'; 
     } 

     // to print names seperated by ',' 
     $temp = ""; 
     foreach ($_SESSION["cart_products"] as $cart_itm) { 
      $temp .= $cart_itm["product_name"] . ", "; 
     } 

     echo $temp; 
    } 

    // you cant print array using echo directly 
    print_r($_SESSION["cart_products"]); 

    ?> 
+0

感谢Priyesh的帮助,但我已经整理出了另一个的解决方案。不过,我感谢你的帮助。 – Adictonator