希望有人能理解这...
我对 php 还是很陌生,我被卡住了。
我有一个问题...我有一个带有由 foreach 循环生成的复选框的列表,每个框都应该有一个多维数组作为它的值。
<input type='checkbox' name='unit[]' value='multidimensional array' />
我有一个包含这样的数组的文件:
$disclaimer = disclaimer;
$unit = array(
//EXTRAS
"0" => array("key0_key0" => "<h1>key0_key0_VALUE</h1>",
"key0_key1" => "<li>key0_key1_VALUE</li>",
"key0_key2" => "<li>key0_key2_VALUE</li>",
"key0_key3" => "<li>key0_key3_VALUE</li>",
"key0_key4" => "<li>key0_key4_VALUE</li>",
"key0_key5" => "<li>key0_key_VALUE</li>",
"key0_key6" => array("key0_key6_key1" => "<h1>key0_key6_key1_VALUE</h1>",
"key0_key6_key2" => "<li>key0_key6_key2_VALUE</li>"
),
),
),
//UNIT 1
"1" => array("key1_key0" => "<h1>key1_key0_VALUE</h1>",
"key1_key1" => "<li>key1_key1_VALUE</li>",
"key1_key2" => "<li>key1_key2_VALUE</li>",
"key1_key3" => "<li>key1_key3_VALUE</li>",
"key1_key4" => "<li>key1_key4_VALUE</li>",
"key1_key5" => "<li>key1_key_VALUE</li>",
"key1_key6" => array("key1_key6_key1" => "<h1>key1_key6_key1_VALUE</h1>",
"key1_key6_key2" => "<li>key1_key6_key2_VALUE</li>"
),
),
),
//UNIT 2
"2" => array("key2_key0" => "<h1>key2_key0_VALUE</h1>",
"key2_key1" => "<li>key2_key1_VALUE</li>",
"key2_key2" => "<li>key2_key2_VALUE</li>",
"key2_key3" => "<li>key2_key3_VALUE</li>",
"key2_key4" => "<li>key2_key4_VALUE</li>",
"key2_key5" => "<li>key2_key_VALUE</li>",
"key2_key6" => array("key2_key6_key1" => "<h1>key2_key6_key1_VALUE</h1>",
"key2_key6_key2" => "<li>key2_key6_key2_VALUE</li>"
),
),
);
我将它们放在一个单独的包含文件中,我将这些文件包含在我可能需要显示它们的地方。
然后在我的页面上,我将其包含在内,然后是一个 foreach 循环,以显示每个带有一个复选框,该复选框将每个单元数组的复选框值增加一个。
$i = 0;
foreach($unit as $unit_no){
echo"<div class='pricelist-container'>";
if (is_array($unit_no)){
foreach ($unit_no as $unit_details){
if (is_array($unit_details)) {
foreach ($unit_details as $unit_contents){
if (is_array($unit_contents)){
foreach ($unit_contents as $extra){
echo $extra;
}
}
else{
echo $unit_contents;
}
}
}
else{
echo $unit_details;
}
}
}
else{
echo $unit_no;
}
echo"
$disclaimer
//below is where my problem seems to start.
<p class='fine'> <input type='checkbox' name='unit[]' value='" . "$" . "unit" . "[" . $i++ . "];' checked='checked' /> please uncheck to remove list</p>
<br />
</div>";
}
这是我的问题...但是由于我对此很陌生,因此我可能大错特错。
我需要这些复选框来生成 $var[key] 作为值,然后在提交表单后,它需要能够将这些变量传递到一个新页面,在该页面中我再次包含了数组文件,这样我就可以遍历复选框并将它们再次显示在候选名单上。但我不能以这样的方式编写代码,即每次将一个单元添加到包含文件时,我都需要添加小循环来回显这些单元中的每一个,因为我会将这个包含文件更改为数据库文件并创建一个上传页面让网站所有者创建他/她自己的新单元,而无需编辑任何内容以在网站上显示。
if(isset($_POST['unit'])){
if (is_array($_POST['unit'])){
foreach ($_POST['unit'] as $print_unit){
echo $print_unit;
}
}
}
//this loop will echo out the $var[key] as strings.
上面的 foreach 会将 $var 作为字符串回显,但不会作为带有递增键的 $var 回显。
它基本上是一个产品列表,其中每个产品的内容都在一个数组中,带有复选框以从可打印列表中添加或删除它们。除了创建复选框值之外,一切正常......
value='" . "$" . "unit" . "[" . $i++ . "];'
这将为我在包含中的每个数组创建名称 $unit[1] 但它会生成一个字符串 $unit[1] 但不是实际数组,它是第一个键。