1

有什么办法可以缩短这段代码吗?

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

有任何想法吗?

4

3 回答 3

4

这个想法很好。您在构建变量名称时遇到了一点错误。使用以下代码:

for ($i = 1; $i <= 12; $i++) {
    if (${"Item_$i"} != "_") .... should work 
}

您正在做的事情在 php中称为变量变量。查看 手册以获取更多信息和示例。


另一个想法:为什么不使用数组?这应该更适合这里:

$item = array (
    'foo', 'bar', 'test', 'xyz', ...
);

for ($i = 1; $i <= count($item); $i++) {
    if ($item[$i] != "_") 
}

进一步注意,您可以使用三元运算符来缩短if语句。(请注意,在这种情况下我不会这样做,因为它的可读性较差,但为了完整起见,我至少会提到它):

$item[$i] != "_" ? $other[$i] = 'something' : 1; // no else block, just a `NOP 1`;
于 2013-06-08T16:48:54.240 回答
1

为了清楚起见,试试这个:

$item_var = "Item_".$i;
If ($$item_var != "_"){}
于 2013-06-08T16:49:00.753 回答
0

如果 var1、var2 等,您可能应该使用数组。您也可以轻松地使用循环。

于 2013-06-08T16:51:38.860 回答