如果数组echo键中存在post数据

时间:2014-05-22 02:06:10

标签: php arrays loops

我对此表单操作有一个输入:

<?php
  $product_add = $_POST['product'];
  $pa = strtolower($product_add);
  $tv= array('Sony'=>'sony tv', 'vizio' => 'vizio tv', 'panasonic' => 'panasonic tv');
  if (in_array($pa, $tv)) {
    foreach ($tv as $key => $item) {
      if ($item === $pa) {echo $item.' is begin with ('.$key.')';}
    }
?>
<div class="tv">
  <form name="addform" action="inc/ap-tv.inc.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="product_type" value="TV">
    <input type="hidden" name="user" value="<?php echo $_SESSION['user_name'] ?>">  
    <label for="brand">Brand</label> <input type="text" name="brand" value="<?php echo $key; ?>"><br>
    <input name="" type="submit" value="Add Television" />
  </form>   
</div>
<?php
}
?>

如果有人进入索尼电视&#39;进入初始输入表格我想要#34;索尼&#34;作为品牌领域的价值出现。

当我在foreach循环中回显$ key时它可以正常工作,但当我尝试将其作为输入值回显时,我得到一个数字。如何在foreach循环之外使变量可用?我也试过同时使用&#39; print&#39;和&#39; print_r()&#39;但都没有工作。对不起,如果这很简单,我就是这种东西的初学者。

谢谢!

3 个答案:

答案 0 :(得分:2)

$key仅存在于循环内部。当循环终止时,它声明的变量也会这样做。

您需要做的就是使用array_search()根据值获取密钥:

if (in_array($pa, $tv)) {
    $brand = array_search(strtolower($pa), $tv);
}

<label for="brand">Brand</label> 
<input type="text" name="brand" value="<?php echo $brand; ?>"><br>

Demo

答案 1 :(得分:0)

当你在循环中回显时,只有匹配时才会回显。循环继续。在循环中添加break;或将匹配存储在与循环无关的变量中。

答案 2 :(得分:0)

你已经设置了'Sony'的密钥,但是其他两个都是隐含密钥,因为你的语法不好。

$tv= array('Sony'=>'sony tv', 'vizio => vizio tv', 'panasonic => panasonic tv');

应该阅读

$tv= array('Sony'=>'sony tv', 'vizio' => 'vizio tv', 'panasonic' => 'panasonic tv');

您还有语法错误:第一个if语句未关闭(缺少}

另见Jeremy的答案。