php - 从$ _SESSION中检索值并使用另一个变量

时间:2016-06-09 14:37:22

标签: php session variables global-variables

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

我知道$ _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()功能。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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"] );

    ?>

答案 2 :(得分:0)

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

以下是更正后的代码:

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