2016-02-12 109 views
2

如果我在函數中使用了返回值,我將只獲得一個值。Php - 返回一個值的Foreach,第一個或最後一個

如果我使用回聲,我會得到所有的值。我不明白。

foreach($matches[0] as $matchbun) 
{ 

     $var1 = str_split($matchbun, 34); 
     $replace_line = "-"; 
     $var_final = str_replace($replace_line, " ", $var1[1]); 

     $replace_url = array('google.com', '/name/'); 
     $replace_url_with = array('yahoo.com', '/url_'); 
     $url_final = str_replace($replace_url, $replace_url_with, $matchbun); 



     return ''.ucfirst($url_final).''; 

} 

似乎我不能將回聲插入到數據庫中,如果我運行該函數,它們顯示爲空白。 怎麼辦?

+0

對不起隊友,我是新來的,不知道我必須標記任何東西。我現在做了,希望沒關係。讓我知道。 –

+0

對不起,我的壞話,但至少有一件好事發生。 –

回答

4

當你有一個return代碼將不會進一步執行。生成整個數據,然後return那個數據。

您可以構建一個數組。 Like -

$urls= array(); 
foreach($matches[0] as $matchbun) 
{ 
    ..... 
    $urls[]= ucfirst($url_final); 
} 
return $urls; 

或者您可以生成一個字符串。像 -

$urls= ''; 
foreach($matches[0] as $matchbun) 
{ 
    ..... 
    $urls.= ucfirst($url_final); 
} 
return $urls; 
+0

謝謝。解決:$ url =''; ($ match [0] as $ matchbun) { ..... $ urls。= ucfirst($ url_final); } return $ urls; <3 –

0

那麼,如果您使用return,您將在第一次迭代時退出該函數。 如果你使用echo,那麼你並沒有退出這個函數,而是迴應foreach循環的每一次迭代。

0

退回循環。並把你想要返回的數據放入一個變量中。像這樣:

foreach($matches[0] as $matchbun) 
    { 

    $var1 = str_split($matchbun, 34); 
    $replace_line = "-"; 
    $var_final = str_replace($replace_line, " ", $var1[1]); 

    $replace_url = array('google.com', '/name/'); 
    $replace_url_with = array('yahoo.com', '/url_'); 
    $url_final = str_replace($replace_url, $replace_url_with, $matchbun); 
    $myNewVariable .= $url_final; 
    } 

    return $myNewVariable; 
相關問題