Нет ответа от функции

Рейтинг: 0Ответов: 2Опубликовано: 14.01.2015

Доброго времени суток.

Суть в чем: есть некая переменная, которая получает адрес картинки, которая потом обрабатывается функцией и возвращается, но суть в том, что когда происходит возврат, значение становиться нулевым.

Вот код php:

<?php 
  $img="http/site.ru/1.img";
  var_dump($img);
  function strReplase($imgThe){
    $imgUrl=str_replace(".jpg","-150x150.jpg",$imgThe);
    return $imgUrl;
   }
  var_dump(strReplase($img);?>

В ответ я получаю:

string(18)"http/site.ru/1.img"  null

Подскажите, пожалуйста, почему не передается значение из функции. Код не совсем живой, поэтому возможны где-то очепятки.

Причем если поставить

   return var_dump($imgUrl);

то получится

 string(18)"http/site.ru/1.img" string(25)"http/site.ru/1-150x150.img"  null

то есть функция обрабатывает данные.

Тут просили выложить настоящую функцию.
В данный момент на сайте (конечно, это тест для проверки) я разместил вот такой код:

 function srtReplace($img){                    
  $imgUrl=str_replace(".jpg","-150x150.jpg",$img);
  return $ImgUrl;}
 $theOneImg="http://site.ru/one.jpg";
 $oneThumb=srtReplace($theOneImg);
 var_dump($oneThumb);

Результат null.

Ответы

▲ 3Принят

1) Функция должно возвращать значение. Возвращение идет через return $imgUrl; Ваша строка с var_dump возвращает результат выполнения функции var_dump

2) В вызове функции вы передали не ту переменную и не закрыли скобку.

var_dump(strReplase($img));


Вот код:

<?php 
  $img="http/site.ru/1.img";
  var_dump($img);
  function strReplase($imgThe){
    $imgUrl=str_replace(".jpg","-150x150.jpg",$imgThe);
    var_dump($imgUrl);
    return $imgUrl;
   }
  var_dump(strReplase($img)); // Тут изменил $imgThe на $img
?>

Выводит:

string(18) "http/site.ru/1.img"
string(18) "http/site.ru/1.img"
string(18) "http/site.ru/1.img"

В следующем вашем варианте:

function srtReplace($img){                    
  $imgUrl=str_replace(".jpg","-150x150.jpg",$img);
  return $imgUrl; // изменил $ImgUrl на $imgUrl
  }
 $theOneImg="http://site.ru/one.jpg";
 $oneThumb=srtReplace($theOneImg);
 var_dump($oneThumb);

Вывод:

string(30) "http://site.ru/one-150x150.jpg"
▲ 3

Ну так то что Вы спрашиваете, то и получаете. Так же измените

return var_dump($imgUrl);

на

return $imgUrl;

Вы определитесь - Вам или вывести результат в функции надо, или вернуть из неё?