2013-10-10 2 views
-2

Когда я вызываю эту функцию, он не возвращает данные (используя только возврат), но когда я использую print_r, он работает.PHP print_r работает, но return не работает

Это connector.php

class Connector 
{ 

     public function Connect() { 

      $client = new Client(null); 
       $cookiePlugin = new CookiePlugin(new ArrayCookieJar()); 
       $client->addSubscriber($cookiePlugin); 

      private $MainPageURL = "http://example.com"; 
      $login_url = $this->GetMainPage($client, $this->MainPageURL); 

     } 

      private function GetMainPage($client, $url) { 

         $request = $client->get($url); 

         $response = $request->send(); 

         $data = $response->getInfo('url'); 

         return $data; // doesn't work 
         print_r($data); //works 

        } 

} 

и client.php содержит

require 'connector.php'; 
$connector = new Connector($datos); 
$con = $connector->Connect(); 

    echo $con["login_url"]; 
+0

Как вы определяете, что 'return' не работает? Что происходит при попытке 'print_r (GetMainPage (значение, значение));'? –

+1

Когда я вызываю эту функцию, он не возвращает данные (без print_r). – vmark99

+0

Прочтите сообщение еще раз, я сказал, что я назвал функцию $ x = GetMainPage (a, b); а затем echo $ x; , – vmark99

ответ

0

Я думаю, что вы путаете return и echo. return не выводит ничего, но позволяет использовать значение вне функции, как это:

$johndoe = GetMainPage('x', 'y'); 

echo $johndoe; 

Часто вы можете увидеть это используется, используя короткий синтаксис эхо в PHP: <?=. Результат будет выглядеть следующим образом:

<?=GetMainPage('x', 'y')?> 
// This is short for: 
<? echo GetMainPage('x', 'y'); ?> 

В любом случае, вам нужно что-то делать с результатом работы функции, в противном случае значение просто теряется в забвении. То есть, если функция возвращает результат. Некоторые функции просто «делают» что-то и ничего не возвращают.

+0

Да, я знаю. Я заявил, что я назвал функцию $ x = GetMainPage (a, b); а затем echo $ x; но он не возвращает данные. но он возвращает данные, когда я помещаю print_r туда. – vmark99

+0

на самом деле вы этого не указали - вы можете отредактировать вопрос –

+0

Возможно, разница между 'print_r' и' echo' является проблемой. Что произойдет, если вы вызываете 'print_r ($ x);' или даже 'print_r (GetMainPage ('x', 'y'));'? – GolezTrol

2

print_r! == эхо

Является ли ваши данные массив или объект, случайно?

попробовать

var_dump($x); 

, чтобы получить больше информации.

Смежные вопросы