使用For更短的代码

时间:2013-06-08 16:46:00

标签: php

有没有办法缩短这段代码?

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 :/
}

有什么想法吗?

3 个答案:

答案 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等你可能应该使用数组。你也可以轻松使用循环。