如何使用多个值循环遍历数组

时间:2011-06-21 21:18:35

标签: php arrays

我知道这个问题很简单,但我对数组的经验很少而且有困难。无论如何我有这个数组:

$variables=array("$value1" => "int",$value2 => "var",$value3 => "int");

我想循环浏览它并为每个$ value添加

$stmt->bindValue(1,$value, PDO::PARAM_INT);如果$ value是'int'或

$stmt->bindValue(1,$value);如果$ value是'var'

并在循环变量时增加'1'。有谁知道怎么做?

3 个答案:

答案 0 :(得分:2)

也许是这样的:

$count = 1;
foreach ($variables as $key => $value){

  switch ($value) {
        case "int":
            $stmt->bindValue($count, $value, PDO::PARAM_INT); 
          break; 

        case "var":            
            $stmt->bindValue($count, $value);      
         break;

        default:
           exit("Invalid value");            

    }                
          $count++; 

}

答案 1 :(得分:1)

foreach循环让您循环遍历数组。 foreach ($array as $k=>$v)语法允许您定义一个变量来保存当前键($k),另一个用于保存当前值($v)。我还使用了一个在每个周期($i)递增的简单变量。

然后使用简单的if - elseif组合来做不同的事情。

$i=1;
foreach ($variables as $k=>$v) {
    if ($v=='int') {
        $stmt->bindValue($i, $k, PDO::PARAM_INT);
    }
    elseif ($v=='var') {
        $stmt->bindValue($i, $k);
    }
    $i++;
}

这可以进一步优化,我想展示逻辑。

答案 2 :(得分:1)

简单循环应该这样做

$x=0;
foreach($variables as $key=>$value)
{
  if($value=="var")
   {
     $stmt->bindValue($x,$key);
   }
   else
   { 
      $stmt->bindValue($x,$value, PDO::PARAM_INT);
   }
  $x++;
}