如您在下面的代碼中看到的,我對三個結構類似的變量使用相同的代碼(foreach
循環,數組賦值和尾隨json_decode
)三次。我想知道如何優化我的代碼,以便它不會不必要地重複執行功能。變量變量在這種情況下會有幫助嗎?我可以將重複的代碼行移動到第一個foreach
聲明中嗎?重構PHP代碼 - 減少foreach語句的數量
這裏是我的代碼看起來像現在:
date_default_timezone_set('America/Los_Angeles');
$stocks = array('MSFT' => 'http://ichart.finance.yahoo.com/table.csv?s=MSFT', 'AAPL' => 'http://ichart.finance.yahoo.com/table.csv?s=AAPL', 'FB' => 'http://ichart.finance.yahoo.com/table.csv?s=FB', 'ZNGA' => 'http://ichart.finance.yahoo.com/table.csv?s=ZNGA');
foreach ($stocks as $key=>$stock) {
$fh = fopen($stock, 'r');
$header = fgetcsv($fh);
$varname = $key . '_data';
$$varname = array();
while ($line = fgetcsv($fh)) {
${$varname}[count($$varname)] = array_combine($header, $line);
}
fclose($fh);
}
foreach($MSFT_data as $val){
$MSFT[] = array((strtotime($val['Date']) * 1000), ((float)$val['Close']));
}
$MSFT = json_encode(array_reverse($MSFT));
foreach($AAPL_data as $val){
$AAPL[] = array((strtotime($val['Date']) * 1000), ((float)$val['Close']));
}
$AAPL = json_encode(array_reverse($AAPL));
foreach($FB_data as $val){
$FB[] = array((strtotime($val['Date']) * 1000), ((float)$val['Close']));
}
$FB = json_encode(array_reverse($FB));
感謝。如果您有任何問題,請告訴我。
爲什麼要動態地創建變量名但不只是使用關聯數組? – 2013-03-11 02:51:11
這是一個我一直想知道的問題,如何爲相同數量的元素和每個元素在同一時間對多個數組進行foreach循環。 – 2013-03-11 03:08:38