Если я использую 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;