【问题标题】:echo out $_SESSION data回显 $_SESSION 数据
【发布时间】:2016-07-22 22:09:54
【问题描述】:

我在一个数组中有一堆数据,这些数据是在会话中收集的。我可以打印这个并显示所有内容,但我很难显示产品名称、ID、图像等。

我正在展示使用:

<?php
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>

它会打印出我需要的所有内容,但不是我需要的格式。所以我知道它正在收集我的数据并将其存储在数组中。我已将数据设置在另一个文件中,如下所示:

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'][] = $_POST['product_img'];
    $_SESSION['product_id'][] = $_POST['product_id'];
    $_SESSION['product_name'][] = $_POST['product_name'];
    $_SESSION['product_price'][] = $_POST['product_price'];
    $_SESSION['product_sku'][] = $_POST['product_sku'];
    $_SESSION['product_description'][] = $_POST['product_description'];
} 

这就是我想要输出的所有内容。

【问题讨论】:

  • 删除每个 $_SESSION 变量末尾的 []。
  • 请更具体地说明您要执行的操作。据我所知,您是在问如何以“可读”格式输出数据,而 print_r 对我来说非常可读。
  • 抱歉,例如我需要显示产品图片、产品名称,就像我从数据库中选择这些项目时一样

标签: php session mysqli


【解决方案1】:

**要么坚持你的提议:$_SESSION['...'][] **

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'][] = $_POST['product_img'];
    $_SESSION['product_id'][] = $_POST['product_id'];
    $_SESSION['product_name'][] = $_POST['product_name'];
    $_SESSION['product_price'][] = $_POST['product_price'];
    $_SESSION['product_sku'][] = $_POST['product_sku'];
    $_SESSION['product_description'][] = $_POST['product_description'];
} 

并像这样格式化:

foreach($_SESSION as $elements)
{
    foreach($elements as $element) {
        echo $element . '<br />';
    }
}

或使用其他方法:

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'] = $_POST['product_img'];
    $_SESSION['product_id'] = $_POST['product_id'];
    $_SESSION['product_name'] = $_POST['product_name'];
    $_SESSION['product_price'] = $_POST['product_price'];
    $_SESSION['product_sku'] = $_POST['product_sku'];
    $_SESSION['product_description'] = $_POST['product_description'];
} 

并像这样格式化:

foreach($_SESSION as $element)
{
    echo $element . '<br />';
}

【讨论】:

  • 但我的问题实际上是如何以可读格式输出这些数据?
  • 通过删除 [ ] 它阻止了我向会话中添加多个项目的能力
  • 通过使用 foreach 我得到Array Array Array Array Array Array
  • 是的,然后你在这些数组上使用另一个 foreach。 :P
  • 我真的很抱歉我没有遵循这是我真的很苦恼的事情。
【解决方案2】:

将其输出为 HTML 的一种简单方法是使用 foreach 循环,该循环遍历数组中的每个项目。

为了让事情更简单,我建议更改您的 POST 代码,以便每个项目都是一个数组,就像这样。

if (isset($_POST['Submit'])) { 
    $_SESSION['products'][] = array(
        'img' => $_POST['product_img'],
        'id' => $_POST['product_id'],
        'name' => $_POST['product_name'],
        'price' => $_POST['product_price'],
        'sku' => $_POST['product_sku'],
        'description' => $_POST['product_description']
    );
} 

现在您可以遍历$_SESSION['products'] 并获取会话中每个产品的信息。例如:

foreach ($_SESSION['products'] as $product) {
    $name = $product['name'];
    $id = $product['id'];
    $price = $product['price'];
    $img = $product['img'];
    $sku = $product['sku'];
    $description = $product['description'];

    echo "<h1>Product: $name</h1>";
    echo "<p>Price: $price | ID: $id</p>";
    echo "<img src='$img'>";
    echo "<p>$description</p>";
    echo "<hr />";
}

【讨论】:

  • 这个方法更干净
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2013-08-08
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多