php - 在 PHP 中组合数组

标签 php html

尝试学习 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 />"; 
} 

cookies 和饮料都是选择题,所以可以多选一个答案。

但是,experimentalArray 仅显示在饮料和 cookies 问题中选择的最后一个答案。

例如,我在 cookies 中选择 Oreos 和 Chocolate Chip,在饮料中选择 Soda 和 Wine。

答案是:“ cookies - 巧克力片饮料 - 酒”

为什么不显示所有值?

为多维脚本编辑

<?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 开始?

此外,这种形式是否适合做多维数组?它可以用更好的方式重写吗?

再次感谢大家的回复。虽然我不是很懂他们! :) 所以,也感谢您的耐心等待。

最佳答案

不知道您使用的是哪个 php 教程,但停止使用它,它可能已经过时了!

您必须使用 $_POST/$_GET/$_REQUEST(包含 POST、GET 和 - 取决于配置- Cookie 值)数组。 register_globals已弃用,如果启用则可能存在安全漏洞。

例如,使用 $drinks = isset($_POST['drinks']) ? $_POST['drinks'] : array(); 获取 $drinks 数组。 $cookies 也是一样。


关于你的数组问题。看起来您想要 drinks 数组中的键和 hte cookies 数组中的值。如果是,请查看 array_combine() .请注意,它要求两个数组具有相同数量的元素,因此用用户生成的长度可能不同的数组来为其提供数据并不是一个好主意。

仅供引用,$experimentalArray = array($cookie => $d); 将 $cookies 的最后一个元素映射到 $drinks 的最后一个元素,因为 PHP 没有 block 作用域,因此 $cookie 和$d 仍然指向您在 foreach 循环中获得的最后一个数组元素。

关于php - 在 PHP 中组合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4777511/

相关文章:

php - Laravel 路由参数与 post 路由 vs post 参数

php - 路由前缀如下 Virtual Host

php - 不允许用户在输入中输入 HTML 标签

html - 左右浮动两个div

javascript - onclick嵌入视频,背景音乐停止

html - 即使内部有列,Bootstrap 行仍会在右侧产生间隙

html - 将盒子向下放置

php - 我还需要实现 "read more"功能

php - 使用 php 以编程方式缩进自动生成的代码

php - MySQL - 插入多个插入,页面停止工作