簡體   English   中英

數組中的變量:對或錯

[英]Variable in an Array: True or False

我正在嘗試確定數組中是否存在變量,以及是否聲明它為“ true”,如果不是聲明它為“ false”。 問題是當我只想知道頁面變量是否存在於帶有http://example.com/product.php?image_id=50之類的鏈接的數組中時,我收到了所有數組變量的響應。

<?php 
$page = $_GET['image_id'];
if (!empty($_SESSION)){
foreach($_SESSION as $name => $value2)   {
  if (substr($name, 0, 7)=='images_') {
  $id = substr($name, 7, (strlen($name)-7));
  $get = mysql_query('SELECT * FROM images WHERE image_id='.mysql_real_escape_string((int)$id));
     while ($cart_info_row = mysql_fetch_assoc($get)) {
        $cart = array('image_id' => $cart_info_row['image_id'],);
        if (in_array($page, $cart)){echo 'true';} else {echo 'false';}
     }
  }
  }
  } 
  }   
?>

假設以下數字在SESSION print_r($ cart)中:

Array ( [image_id] => 42 ) false

Array ( [image_id] => 45 ) false

Array ( [image_id] => 50 ) true

Array ( [image_id] => 49 ) false  

現在,如何確定變量50 ($page = $_GET['image_id'];)是否與其他三個變量一起出現?

據我了解,您的代碼有2件事:1-檢查會話中是否存在關鍵的images_$page和2-檢查數據庫中是否存在具有image_id=$page圖像。

<?php
$page = $_GET['image_id'];
if(isset($_SESSION['images_'.$page]))
{
    $get = mysql_query("SELECT * FROM images WHERE image_id='".mysql_real_escape_string($page)."' LIMIT 1");
    if($cart_info_row = mysql_fetch_row($get))
    {
        echo 'true';
    }
    else
    {
        echo 'false';
    }
}
else
{
    echo 'false';
}

這里isset用於檢查關鍵images_$page存在於$_SESSION 它比對substr()函數進行2次調用要快。

另外,由於我們僅需要檢查給定的圖像是否存在,因此foreach循環將替換為if

在此之后,一個MySQL查詢運行,因為我們只需要第一場比賽, LIMIT 1的加入使查詢速度更快。 此外,與image_id的比較已經包含在查詢中,因此它足以測試是否有返回的行(這就是為什么原來的whileif替換的原因)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM