我有一个脚本,根据他们的ID显示产品。在回显的数据中有一个链接,它将用户重定向到同一页面但是有一个发布的id,根据该id我从我的会话中删除了一个产品(id),这是一个数组。除第一个数组值外,这种方法完美无缺。可能导致什么?
我现在的代码如何:
$$countershash{$counter}
在我的报价页面上:
//Link to quote page and send product id with it
echo '<p><a class="offertelink" href="offerte.php?product='.$productcr[0]['id'].'">Request a quote</a></p>';
查询:
ob_start();
include 'includes/header.php';
if(!isset($_SESSION['product'])){
$_SESSION['product'] = array();
}
// Check if product is set before putting it in an array
if(isset($_GET['product']) && !in_array($_GET['product'], $_SESSION['product'])){
$_SESSION['product'][] = $_GET['product'];
}
// Implode array to use ids in query
$prods = implode(",", $_SESSION['product']);
最后在我的查询下面:
if(count($_SESSION['product']) != 0){
// Get all products with id in session
$offerte = "SELECT * FROM `web_content` WHERE `id` in (".$conn->real_escape_string($prods).") AND state = 1";
$offertecon = $conn->query($offerte);
$offertecr = array();
while ($offertecr[] = $offertecon->fetch_array());
}
我已经对我的问题进行了一些阅读,并认为如果我正确的话,它与移动阵列有关。如果我打印我的会话,除了第一个数组之外,所有数组都将被删除。当我改变第一个产品然后无法从会话中删除该产品时,无关紧要。
答案 0 :(得分:1)
您在使用array_search
查找数组中元素时的测试应与false
进行比较。当找到的元素位于索引0时,执行!
将返回false
:
变化:
if( $index = array_search($productID, $_SESSION['product']) ) {
为:
if( ($index = array_search($productID, $_SESSION['product'])) !== false ) {