我正在寻找是否有一种智能或最佳的方式来尝试为循环执行此操作,到目前为止我无法使其工作。
我试图这样做以阻止我重复代码,但如果不可能那么我将只需要重复代码。
这是我试过的
if(!isset($staff_rows)
for ($i=0; $i < 5; $i++)
else
for ($i=0; $i < $staff_rows; $i++)
所以基本上我希望我的forloop使用变量$ staff_rows如果设置,否则只使用默认值5。
这是错误消息
解析错误:语法错误,
中的意外T_FOR
有什么想法吗?
由于
答案 0 :(得分:4)
$min = (isset($staff_rows)) ? $staff_rows : 5 ;
for ($i=0; $i < $min; $i++) {
//loop logic
}
答案 1 :(得分:4)
最简单的方法。
$staff_rows = 5;
// your code to change staff_rows
for ($i=0; $i < $staff_rows; $i++) {
// do something
}
答案 2 :(得分:1)
for($i=0,$s=(isset($staff_rows)?$staff_rows:5);$i<$s;++$i) //do
<强>加了:强>
关于三元运算符的更多信息:
What is ?: in PHP 5.3?
gion_13答案中的一些benchmark.manual页面
$array=range(1,1000000);
$i=17;
$start= microtime(true);
$s=sizeof($array);
for($i=0;$i<$s;++$i){
;
}
print microtime(true)-$start;
print chr(10);
$start= microtime(true);
for($i=0,$s=sizeof($array);$i<$s;++$i){
;
}
print microtime(true)-$start;
print chr(10);
$start= microtime(true);
for($i=0;$i<sizeof($array);++$i){
;
}
print microtime(true)-$start;
print chr(10);
输出
0.18430280685425
0.1843409538269
1.3922038078308
答案 3 :(得分:1)
将您的代码重写为以下内容:
$limit = 5;
if (isset($staff_rows)) {
$limit = $staff_rows;
}
for ($i=0; $i < $limit; $i++) { }
你的代码也会用括号更清晰。此外,您在问题中的代码示例中缺少一个右括号。
答案 4 :(得分:0)
除了你有一个“)”之外,你可以做一个for循环:
for($i=0,$l=isset($staff_rows)?$staff_rows:5;$i<$l;$i++){
// do your thing
}
它很有效,因为你只使用一个for
- 循环
我在循环中使用逻辑($l=isset($staff_rows)?$staff_rows:5;
)这一事实并不会影响它的执行...但是不要相信我的话:
来自php.net文档:
for (expr1; expr2; expr3)
statement
“第一个表达式(expr1)在循环开始时无条件地评估(执行)一次。”