2015-05-04 3 views
4

У меня есть следующий код, который работает правильно. Друзья Twitter указаны правильно, однако кажется, что при отображении последнего элемента появляется ошибка «Уведомление: попытка получить свойство не-объекта» отображается 4 раза.Как скрыть ошибку «Попытка получить свойство не-объекта»

Поскольку код работает так, как должен, я хотел бы скрыть эти ошибки.

$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret); 
$tweets6 = $connection->get("https://api.twitter.com/1.1/friends/list.json?screen_name=".$twitteruser."&count=".$notweets); 
foreach ($tweets6 as $tweet) 
{ 
    for($i = 0; $i < count($tweet); $i++) 
    { 
     echo $tweet[$i] -> name; 
     echo "<br />"; 
    } 
} 
+1

нет, доступ к значениям правильно, и вы не будете иметь проблемы, то не пытаются скрыть ошибки и попытаться их решить, что же '$ tweet6' содержат все равно – Ghost

+0

$ tweets6 список объектов, он определен в моем коде – user2675041

ответ

4

вы можете добавить проверки, если объект имеет определенное свойство, прежде чем использовать его значение

if (isset($tweet[$i]->name)) { 
    // process 

} 
+0

Спасибо, это решило! – user2675041

1

заменить это:

for($i = 0; $i < count($tweet); $i++) 

с этим:

for($i = 0; $i < count($tweet) - 1; $i++) 

EDIT

for($i = 0; $i < count($tweet); $i++){ 
    if (isset($tweet[$i]->name)) { 
     echo $tweet[$i] -> name; 
     echo "<br />"; 
    } 
} 

попробовать этот

+0

Я уже пробовал это, он удалил ошибку, но также и последний элемент – user2675041

+0

@ user2675041 Я редактировал свой код, поэтому, пожалуйста, пройдите через это, надеюсь, что это поможет –

1

Используйте простой, если условие перед печатью ..

$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret); 
    $tweets6 = $connection->get("https://api.twitter.com/1.1/friends/list.json?screen_name=".$twitteruser."&count=".$notweets); 
foreach ($tweets6 as $tweet) 
{ 
    for($i = 0; $i < count($tweet); $i++){ 
    if($tweet[$i]){ 
     echo $tweet[$i] -> name; 
     echo "<br />"; 
    } 
    } 
} 
0

использовать, если пусто предотвратить это уведомление.

$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret); 
$tweets6 = $connection->get("https://api.twitter.com/1.1/friends/list.json?screen_name=".$twitteruser."&count=".$notweets); 
foreach ($tweets6 as $tweet) 
{ 
    for($i = 0; $i < count($tweet); $i++) 
    { 
     if(empty($tweet[$i]->name)) continue; 
     echo $tweet[$i]->name; 
     echo "<br />"; 
    } 
} 
0

Хотя принятый ответ будет работать, PHP имеет функцию property_exists(), чтобы сделать эту работу, и было бы более уместным. Он вернет true, даже если свойство имеет нулевое значение, которое isset() этого не делает.

if (property_exists($tweets[$i], "name")) { 
    .... 
} 

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

  • Нет связанных вопросов^_^