试图用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 />
Run Code Online (Sandbox Code Playgroud)
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 />";
}
Run Code Online (Sandbox Code Playgroud)
饼干和饮料都是多项选择题,因此您可以选择多个答案.
但是,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 />";
}
Run Code Online (Sandbox Code Playgroud)
}?>
好的,所以尝试做一个多维数组脚本,因为前一个脚本不会按照HTML表单获取所有值.
这个脚本有效(从这本书中删除并在此修改此代码),但是,$ number值从0开始.如何修改它以便从1开始?
这也就是做多维数组的正确形式吗?它能以更好的方式重写吗?
再次感谢所有回复.即使我不太了解他们!:)所以,谢谢你的耐心等待.
不知道你正在使用哪个php教程,但是停止使用它,它可能已经过时了!
你必须使用$_POST/ $_GET/ $_REQUEST(包含POST,GET和 - 取决于配置 - Cookie值)数组.不推荐使用register_globals,如果启用了潜在的安全漏洞.
例如,用于$drinks = isset($_POST['drinks']) ? $_POST['drinks'] : array();获取$ drinks数组.$ cookies一个相同.
关于您的阵列问题.看起来你想要饮料数组中的键和来自hte cookies数组的值.如果是,请查看array_combine().请注意,它需要两个数组都具有相同数量的元素,但是使用用户生成的数组(其长度可以变化)并不是一个好主意.
Fyi,$experimentalArray = array($cookie => $d);将$ cookies中的最后一个元素映射到$ drinks的最后一个元素,因为PHP没有块范围,因此$ cookie和$ d仍然指向你在foreach循环中得到的最后一个数组元素.