2011-02-02 33 views
1

循環訪問一個動態命名的數組,並將結果與​​以前的位置結果進行比較。php - 使用動態變量名稱檢查以前的

if($s>1 && $s<=10) 
     { 
      if(${"strat{$s}"}[total] > ${"strat{$s-1}"}[total]) 
       $sl_best = $sl_mult; //if this one did better than the previous one, then grab the value 
     } 

而且我得到相關的${"strat{$s-1}"}[total],特別是{$s-1}部分錯誤消息。這裏是錯誤信息:

Parse error: syntax error, unexpected '-', expecting '}' ... 

任何想法如何檢查動態命名變量上的前一個數組位置?

一個解決辦法我只好用$previous = $s-1;每次檢查前,然後替換爲$strat[$previous]${"strat{$s-1}"},但是這似乎醜陋,我想看看是否有人有一個更好的解決方案嗎?

回答

5

動態變量應始終避免,而不是嘗試使用另一個陣列

樣品陣列

$strat = array(
    array('total' => 'some val'), 
    array('total' => 'some val2'), 
    array('total' => 'some val3'), 
    array('total' => 'some val4'), 
    ... 
); 

然後

if($s>1 && $s<=10) { 
    if($strat[$s]['total'] > $strat[$s-1]['total']) { 
      $sl_best = $sl_mult; //if this one did better than the previous one, then grab the value 
    } 
} 
+0

速查手冊http://php.net/manual/en/ language.variables.variable.php – 2011-02-02 01:23:04