无法删除我的数组的第一个值

时间:2016-08-19 07:59:01

标签: php arrays

我有一个脚本,根据他们的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());
}

我已经对我的问题进行了一些阅读,并认为如果我正确的话,它与移动阵列有关。如果我打印我的会话,除了第一个数组之外,所有数组都将被删除。当我改变第一个产品然后无法从会话中删除该产品时,无关紧要。

1 个答案:

答案 0 :(得分:1)

您在使用array_search查找数组中元素时的测试应与false进行比较。当找到的元素位于索引0时,执行!将返回false

变化:

if( $index = array_search($productID, $_SESSION['product']) ) {

为:

if( ($index = array_search($productID, $_SESSION['product'])) !== false ) {