Php – Foreach возвращает одно значение, первое или последнее

Если я использую return в своей функции, я получу только одно значение.

Если я использую эхо, я получаю все значения. Я не понимаю.

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).''; } 

Кажется, что я не могу вставить эхо-сигналы в базу данных, они выглядят пустыми, если я запускаю функцию. Что делать?

Когда вы return код не будет выполняться дальше. Сгенерируйте все данные, затем return эти данные.

Вы можете либо построить массив. Подобно –

 $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; 

Ну, если вы используете return , вы выйдете из этой функции на первой итерации. Если вы используете echo , вы не выходите из функции, вы эхом повторяете каждую итерацию цикла 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); $myNewVariable .= $url_final; } return $myNewVariable;