【发布时间】:2017-04-28 06:56:23
【问题描述】:
我有一个语言的选择下拉列表,我很想将数组的每个元素放在不同的变量中。为了让您理解我的问题,我将在这里放一个代码:
<html dir="ltl">
<?php
header('Content-Type: text/html; charset=utf-8');
$db=mysqli_connect("localhost","root","","travelersdb");
mysqli_query($db,"SET NAMES 'utf8'");
?>
<head>
<link href="Styles/StyleEx.css" rel="stylesheet" type="text/css"/>
</head>
<script type="text/javascript">
var expanded = false;
function showCheckboxes() {
var checkboxes = document.getElementById("checkboxes");
if (!expanded) {
checkboxes.style.display = "block";
expanded = true;
} else {
checkboxes.style.display = "none";
expanded = false;
}
}
</script>
<body>
<tr>
<td>Languages</td>
<td dir="rtl">
<form method="post" action="exxx.php">
<div class="multiselect" dir="rtl">
<div class="selectBox" onclick="showCheckboxes()" dir="rtl">
<select>
<option>Choose language:</option>
</select>
<div class="overSelect" dir="rtl"></div>
</div>
<div id="checkboxes">
<label for="one">
<input type="checkbox" id="one" name="languages[]" value="English">English</label>
<label for="two">
<input type="checkbox" id="two" name="languages[]" value="German" >German</label>
<label for="three">
<input type="checkbox" id="three" name="languages[]" value="French">French</label>
<label for="four">
<input type="checkbox" id="four" name="languages[]" value="Spanish">Spanish</label>
<label for="five">
<input type="checkbox" id="five" name="languages[]" value="Italien">Italien</label>
</div>
</div>
<input type="submit" name="submit">
</form>
</td>
</tr>
<?php
if (isset($_POST['submit'])) {
$languages = $_POST['languages'];
$language1 = $languages[0];
$language2 = $languages[1];
$language3 = $languages[2];
$language4 = $languages[3];
$language5 = $languages[4];
echo $language1;
echo $language2;
echo $language3;
echo $language4;
echo $language5;
}
?>
</body>
</html>
如果我选中所有复选框,则没有问题,但如果我选中的复选框少于 5 个,我会收到以下消息:
Notice: Undefined offset:
这是因为数组大小。如果检查的语言少于 5 种,我该如何避免这种情况并回显变量?
【问题讨论】:
-
这不是一个好习惯。只需使用一个简单的
foreach循环来迭代您的语言数组。如果您将每个语言项转换为单个变量,您将永远不知道变量是否存在。假设您的语言帖子数组包含三个条目。所以你的“$language4”和“$language5”变量永远不会被创建。这使得代码不必要的复杂化。正如我所说,只需使用一个简单的 foreach 循环。