我知道$_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
错误。
如何列出所有用,
分隔的产品名称?
我已经尝试使用implode()
功能。
用于显示所有由 分隔的产品名称,请使用此代码。
$allProductName = '';
$prefix = '';
foreach ($_SESSION["cart_products"] as $cart_itm)
{
$allProductName .= $prefix . '"' . $product_name. '"';
$prefix = ', ';
}
echo $allProductName;
这是代码的编辑版本
<?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"] );
?>
最后,我在@Christophe Ferreboeuf的帮助下得到了问题的答案。但是,仍然需要一些修改。
以下是更正后的代码:
$allProductName = '';
$prefix = '';
foreach ($_SESSION["cart_products"] as $cart_itm)
{
$allProductName .= $prefix . '"' . $cart_itm["product_name"]. '"';
$prefix = ', ';
}
echo $allProductName;