如何在用户会话期间为产品设置var值?

时间:2014-09-29 17:38:26

标签: php session variables scope

我正在循环浏览产品清单并设置variable值,以识别与客户所需属性相交的产品属性。在客户会话期间(或至少在他们保留在该页面上时)为每个产品设置variable值的合理有效方法是什么?目前,似乎没有为每个产品的id保留variable的值,超出了分配它的初始while语句的范围。

每个变量都表明特定属性是否与客户的所需属性列表相匹配。我没有必要无数次地运行查询,而是试图基本上为每个产品分配标签,以指示哪些属性与该客户匹配/不匹配。

我正在为100-200个变量动态执行此操作(使用variable variables),因此我在下面发布了一个简化的代码段。

 $Matches_Pr_Color = "Null";
 $colors_love_AR = array('Black','Charcoal','Light_Gray','White','Royal_Blue','Dodger_Blue','Red');

try {   
    $stmt = $conn->prepare("SELECT * FROM products");       
    $stmt->execute();           
} catch(PDOException $e) {echo $e->getMessage();} 
  if ($stmt->columnCount()) {
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {   
          $Pr_Color=$row['Color'];                          
          if (in_array($Pr_Color, $colors_love_AR)){    
              $Matches_Pr_Color = "True";
              }
          else {                   
              $Matches_Pr_Color = "False";
                }                                   
              echo $Matches_Pr_Color, "<br/>"; 
          }   
  }  
  if ($Matches_Pr_Color == "True") {
        echo  $row['product_id'].', '.$row['Color'], "<br/>";
   }
  else {
      echo  $row['product_id'], " No Match<br/>"; 
  }

1 个答案:

答案 0 :(得分:0)

如果您需要存储结果以便在循环外使用,请使用数组,例如:

$colors_love_AR = array('Black','Charcoal','Light_Gray','White','Royal_Blue','Dodger_Blue','Red');
$size_love_AR = array(16,18,20);
$material_love_AR = array('leather','tweed','cotton');

$results = array();
if ($stmt->columnCount()) {
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
          $product_data=array();                         
          $product_data['color'] = in_array($row['Color'], $colors_love_AR);       
          $product_data['size'] = in_array($row['Size'], $size_love_AR); 
          $product_data['material'] = in_array($row['Material'], $material_love_AR);  

          $results[$row['product_id']] = $product_data;                         
      }   
}

这将创建一个由product_id索引的产品数据数组,例如:

array(
       1=> array('color'=>true, 'size'=>false, 'material'=>true),
       2=> array('color'=>false, 'size'=>false, 'material'=>true),
       3=> array('color'=>true, 'size'=>true, 'material'=>false),
       //etc 
     );

您可以在以后的代码中使用该数组,如下所示:

if($results[2]['color'])
    //product with id 2 is a match for this customers color choice