聪明的方法为循环()? PHP

时间:2011-08-06 15:26:20

标签: php for-loop

我正在寻找是否有一种智能或最佳的方式来尝试为循环执行此操作,到目前为止我无法使其工作。

我试图这样做以阻止我重复代码,但如果不可能那么我将只需要重复代码。

这是我试过的

if(!isset($staff_rows)
for ($i=0; $i < 5; $i++)
else
for ($i=0; $i < $staff_rows; $i++)

所以基本上我希望我的forloop使用变量$ staff_rows如果设置,否则只使用默认值5。

这是错误消息

  

解析错误:语法错误,

中的意外T_FOR

有什么想法吗?

由于

5 个答案:

答案 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)在循环开始时无条件地评估(执行)一次。”