我正在尝试处理此数组,首先测试是否存在支票,然后从数量中推断数据以返回有效价格。
这是固定数量项目的输入,没有可变数量。
<input type="checkbox" name="measure[<?=$item->id?>][checked]" value="<?=$item->id?>">
<input type="hidden" name="measure[<?=$item->id?>][quantity]" value="1" />
这是可变数量项目的输入。
<input type="checkbox" name="measure[<?=$item->id?>][checked]" value="<?=$item->id?>">
<input class="item_mult" value="0" type="text" name="measure[<?=$item->id?>][quantity]" />
因此,生成的数组是多维的。这是一个输出:
Array (
[1] => Array ( [quantity] => 1 )
[2] => Array ( [quantity] => 1 )
[3] => Array ( [quantity] => 1 )
...
[14] => Array ( [checked] => 14 [quantity] => 999 )
)
这是我用来获取此数组的循环,并首先从表单中检查过程项。我想问题本质上归结为如何构造我的条件语句以合并多维数组?
foreach($field as $value):
if ($value['checked'] == TRUE) {
$query = $this->db->get_where('items', array('id' => $value['checked']))->row();
#Test to see if quantity input is present
if ($value['quantity'] == TRUE) {
$newprice = $value['quantity'] * $query->price;
$totals[] = $newprice;
}
#Just return the base value if not
else {
$newprice = $query->price;
$totals[] = $newprice;
}
}
else { } ?>
<p><?=$query->name?> - <?=money_format('%(#10n', $newprice)?></p>
<? endforeach; ?>
我的问题:如何更改循环以使用多维数组?
答案 0 :(得分:1)
你不应该在if语句中与true进行比较。只需使用裸表达式,让PHP检查它的“真实性”:
if ($value['checked']) {
....
if ($value['quantity']) {
答案 1 :(得分:1)
我发现至少有2个错误:
$newprice
来电money_format
的声明置于主要范围之外,否则无法在其外部进行宣传
isset
函数设置。所以代码将是
foreach($field as $value):
$newprice = 0;
if (isset($value['checked']) && $value['checked'] == TRUE) {
$query = $this->db->get_where('items', array('id' => $value['checked']))->row();
#Test to see if quantity input is present
if (isset($value['quantity']) && $value['quantity'] == TRUE) {
$newprice = $value['quantity'] * $query->price;
$totals[] = $newprice;
}
#Just return the base value if not
else {
$newprice = $query->price;
$totals[] = $newprice;
}
}
else { } ?>
<p><?=$query->name?> - <?=money_format('%(#10n', $newprice)?></p>
<? endforeach; ?>