我对此表单操作有一个输入:
<?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;但都没有工作。对不起,如果这很简单,我就是这种东西的初学者。
谢谢!
答案 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>
答案 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的答案。