简化嵌套的 If...Else 语句;灵活阵列
Simplifying a nested If...Else statement; flexible array
所以首先,这是代码:
$greens = $_REQUEST['greens'];
$squash = $_REQUEST['squash'];
$tomatoes = $_REQUEST['tomatoes'];
$single = $greens xor $squash xor $tomatoes;
if (isset($greens,$squash,$tomatoes)) {
$array = [$greens,$squash,$tomatoes];
$product = implode(', ',$array);
} else if (isset($greens,$squash)) {
$array = [$greens,$squash];
$product = implode(', ',$array);
} else if (isset($greens,$tomatoes)) {
$array = [$greens,$tomatoes];
$product = implode(', ',$array);
} else if (isset($squash,$tomatoes)) {
$array = [$squash,$tomatoes];
$product = implode(', ',$array);
} else if (isset($single)) {
$product = $single;
} else {
$product = $_REQUEST['vendor_product'];
}
这是 php 文件的一部分,用于提交供应商注册表。如果供应商 selects 'produce' 作为他们的产品类型,则会出现一组复选框选项,并且需要 select 至少一个选项。根据选项集,值 selected 将在一个字段中集中提交到数据库中。它们在数据库中的显示方式示例如下:'Greens, Squash & Zucchini'
、'Greens, Squash & Zucchini, Tomatoes'
和 'Greens'
等。如果多个选项为 [=23=,则插入 ', '
]ed.
上面的代码有效,但想知道是否有办法简化它,因为我很可能会为用户添加更多选项 select。还有,即使每个条件都有多个真结果,三元运算符还能用吗?我对这个运算符的理解还很陌生。
$names = ['greens', 'squash', 'tomatoes'];
$array = [];
foreach ($names as $name) {
if (isset($_REQUEST[$name])) {
$array[] = $_REQUEST[$name];
}
}
$product = implode(', ',$array);
if (count($array) == 0) {
$product = $_REQUEST['vendor_product'];
}
简化此代码并同时使其更灵活的最佳方法是更改表单本身并使用数组。
而不是
<input type="checkbox" name="green" value="Greens" />
<input type="checkbox" name="squash" value="Squash & Zucchini" />
<input type="checkbox" name="tomatoes" value="Tomatoes" />
你将拥有
<input type="checkbox" name="produce[]" value="Greens" />
<input type="checkbox" name="produce[]" value="Squash & Zucchini" />
<input type="checkbox" name="produce[]" value="Tomatoes" />
和 PHP 代码:
if (empty($_REQUEST['produce'])) {
$product = $_REQUEST['vendor_product'];
} else {
$product = implode(', ', $_REQUEST['produce']);
}
或使用三元运算符:
$product = empty($_REQUEST['produce']) ? implode(', ', $_REQUEST['produce']) : $_REQUEST['vendor_product'];
所以首先,这是代码:
$greens = $_REQUEST['greens'];
$squash = $_REQUEST['squash'];
$tomatoes = $_REQUEST['tomatoes'];
$single = $greens xor $squash xor $tomatoes;
if (isset($greens,$squash,$tomatoes)) {
$array = [$greens,$squash,$tomatoes];
$product = implode(', ',$array);
} else if (isset($greens,$squash)) {
$array = [$greens,$squash];
$product = implode(', ',$array);
} else if (isset($greens,$tomatoes)) {
$array = [$greens,$tomatoes];
$product = implode(', ',$array);
} else if (isset($squash,$tomatoes)) {
$array = [$squash,$tomatoes];
$product = implode(', ',$array);
} else if (isset($single)) {
$product = $single;
} else {
$product = $_REQUEST['vendor_product'];
}
这是 php 文件的一部分,用于提交供应商注册表。如果供应商 selects 'produce' 作为他们的产品类型,则会出现一组复选框选项,并且需要 select 至少一个选项。根据选项集,值 selected 将在一个字段中集中提交到数据库中。它们在数据库中的显示方式示例如下:'Greens, Squash & Zucchini'
、'Greens, Squash & Zucchini, Tomatoes'
和 'Greens'
等。如果多个选项为 [=23=,则插入 ', '
]ed.
上面的代码有效,但想知道是否有办法简化它,因为我很可能会为用户添加更多选项 select。还有,即使每个条件都有多个真结果,三元运算符还能用吗?我对这个运算符的理解还很陌生。
$names = ['greens', 'squash', 'tomatoes'];
$array = [];
foreach ($names as $name) {
if (isset($_REQUEST[$name])) {
$array[] = $_REQUEST[$name];
}
}
$product = implode(', ',$array);
if (count($array) == 0) {
$product = $_REQUEST['vendor_product'];
}
简化此代码并同时使其更灵活的最佳方法是更改表单本身并使用数组。
而不是
<input type="checkbox" name="green" value="Greens" />
<input type="checkbox" name="squash" value="Squash & Zucchini" />
<input type="checkbox" name="tomatoes" value="Tomatoes" />
你将拥有
<input type="checkbox" name="produce[]" value="Greens" />
<input type="checkbox" name="produce[]" value="Squash & Zucchini" />
<input type="checkbox" name="produce[]" value="Tomatoes" />
和 PHP 代码:
if (empty($_REQUEST['produce'])) {
$product = $_REQUEST['vendor_product'];
} else {
$product = implode(', ', $_REQUEST['produce']);
}
或使用三元运算符:
$product = empty($_REQUEST['produce']) ? implode(', ', $_REQUEST['produce']) : $_REQUEST['vendor_product'];