有没有办法缩短这段代码?
If ($Item_1 != "_") { $items1 = explode("_", $Item_1); } Else {}
If ($Item_2 != "_") { $items2 = explode("_", $Item_2); } Else {}
If ($Item_3 != "_") { $items3 = explode("_", $Item_3); } Else {}
If ($Item_4 != "_") { $items4 = explode("_", $Item_4); } Else {}
If ($Item_5 != "_") { $items5 = explode("_", $Item_5); } Else {}
If ($Item_6 != "_") { $items6 = explode("_", $Item_6); } Else {}
If ($Item_7 != "_") { $items7 = explode("_", $Item_7); } Else {}
If ($Item_8 != "_") { $items8 = explode("_", $Item_8); } Else {}
If ($Item_9 != "_") { $items9 = explode("_", $Item_9); } Else {}
If ($Item_10 != "_") { $items10 = explode("_", $Item_10); } Else {}
If ($Item_11 != "_") { $items11 = explode("_", $Item_11); } Else {}
If ($Item_12 != "_") { $items12 = explode("_", $Item_12); } Else {}
我尝试用For做短,但它不起作用的例子:
For ($i = 1; $i <= 12; $i++) {
If (${$Item_ . $i} != "_") .... dont work for me :/
}
有什么想法吗?
答案 0 :(得分:4)
这个想法很好。您在构建变量名时遇到了一点错误。使用以下代码:
for ($i = 1; $i <= 12; $i++) {
if (${"Item_$i"} != "_") .... should work
}
你在做什么在php中被称为变量。请查看the manual about that以获取更多信息和示例。
另一个想法:为什么不使用数组?这应该更好地适应:
$item = array (
'foo', 'bar', 'test', 'xyz', ...
);
for ($i = 1; $i <= count($item); $i++) {
if ($item[$i] != "_")
}
进一步说明,您可以使用ternary operator缩短if
声明。 (请注意,在这种情况下我不会这样做,因为它的可读性较差,但我至少会提到它的完整性):
$item[$i] != "_" ? $other[$i] = 'something' : 1; // no else block, just a `NOP 1`;
答案 1 :(得分:1)
为清楚起见,请尝试:
$item_var = "Item_".$i;
If ($$item_var != "_"){}
答案 2 :(得分:0)
如果var1,var2等你可能应该使用数组。你也可以轻松使用循环。