【发布时间】:2011-01-24 00:19:05
【问题描述】:
尝试学习 PHP 中的数组。为简洁起见,张贴了片段。
此处为 HTML 表单:
<p>What are your favorite type of cookies?</p>
<input type="checkbox" name="cookies[]" value="Oreos" />Oreos<br />
<input type="checkbox" name="cookies[]" value="Chocolate chip" />Chocolate chip<br />
<input type="checkbox" name="cookies[]" value="Sugar" />Sugar<br />
<input type="checkbox" name="cookies[]" value="Vanilla Mocha" />Vanilla Mocha<br />
<p>What are your favorite type of drinks?</p>
<input type="checkbox" name="drinks[]" value="Soda" />Soda<br />
<input type="checkbox" name="drinks[]" value="Wine" />Wine<br />
<input type="checkbox" name="drinks[]" value="Milk" />Milk<br />
<input type="checkbox" name="drinks[]" value="Water" />Water<br />
PHP 页面在这里:
foreach ($drinks as $d) {
echo "Your favorite drink(s) are: " . $d . "<br />";
}
foreach ($cookies as $cookie) {
echo "Your favorite cookies are: " . $cookie . "<br />";
}
$experimentalArray = array($cookie => $d);
foreach ($experimentalArray as $key => $value) {
echo "Cookie - " . $key . " Drink - " . $value . "<br /><br />";
}
饼干和饮料都是多选题,因此您可以选择多个答案。
但是,experimentalArray 仅显示在饮料和饼干问题中选择的最后一个答案。
例如,我在饼干中选择奥利奥和巧克力片,在饮料中选择苏打水和葡萄酒。
答案是:“饼干 - 巧克力片饮料 - 酒”
为什么不显示所有值?
为多维脚本编辑
<?php
$drinks = $_POST['drinks'];
$cookies = $_POST['cookies'];
$combinedArray = array( 'Cookies' => $cookies, 'Drinks' => $drinks);
foreach($combinedArray as $snackType => $snack) {
print "<h2>$snackType</h2>";
foreach ($snack as $number => $snackChosen) {
print " $number is $snackChosen<br />";
}
} ?>
好的,因此尝试执行多维数组脚本,因为之前的脚本不会按照 HTML 表单获取所有值。
此脚本有效(从一本书中摘录并在此处针对此代码进行了修改),但是,$number 值从 0 开始。如何修改它以使其从 1 开始?
另外,这是做多维数组的正确形式吗?它可以以更好的方式重写吗?
再次感谢您的所有回复。即使我不太了解他们! :) 所以,也感谢您的耐心等待。
【问题讨论】:
-
专业提示:
print_r($_POST);。另外,请告诉我您关闭了register_globals,您只是在为 $_POST 数组设置别名。 -
是的,全局寄存器已关闭。是的,别名 $_POST 数组,如果你的意思是我在 php 页面中“重命名”它。正如我在下面对 ThiefMaster 的评论中发布的那样: $drinks = $_POST['drinks']; $cookies = $_POST['cookies'];