2016-01-20 43 views
0

我有一個函數geturls()返回$urls作爲陣列PHP迴路(計數陣列)/次

$urls[1] $urls[2] .....$urls[44] 

但是我不知道的$urls計數(有時44 45 77 ....)

我想爲多次循環(在這種情況下,44,但可能會改變)

因此,這裏是我的腳本

function geturls($xml){ 
//my function 
} 

$urls = geturls($xml); 
$counti = count($urls); 

for ($i = 1; $i <= $counti; $i++) { 
$modifiedurl = modify($urls[$i]); 
echo $modifiedurl; 
} 

有沒有更好的方法來做到這一點(我敢肯定沒有使用count()有更好的方法?

回答

1

您可以通過與陣圖功能的數組中的元素行走。

$modifiedUrls = array_map('modify', $urls); 

剛做了一個關於我們答案的測試。

<?php 

$start = microtime(true); 

$urls = range(1, 1000000); 

function modify($url) 
{ 
    return "modified_".$url; 
} 

$modified_urls = []; 

foreach ($urls as $url) { 
    $modified_urls[] = modify($url); 
} 

// $modified_urls = array_map('modify', $urls); 

$end = microtime(true); 

$time_elapsed_secs = $end - $start; 

echo $time_elapsed_secs; 
  • 的foreach:0.202〜MS

  • array_map:0.130 382 4毫秒

+0

謝謝Ozan,但在記憶力方面還是BEn Pearl Kahan的方式更好? – AK47

+0

foreach循環總是比map更快,但我總覺得它更清潔。 –

+0

錯誤評論!對於那個很抱歉。更新了答案。 –

0

使用foreach()

$modified_urls = []; //create new array for modified URLs 

foreach($urls as $url){ 
    $modified_urls[] = modify($url); //modify this URL and add it to the array 
} 

print_r($modified_urls); //output the array 
+0

感謝你爲這個快速回答 – AK47

+1

由Ozan庫爾特,哪一個你請參閱答案從記憶的角度來考慮更好? – AK47