Неопределенное смещение: 1 в AND. Попытка получить свойство необъекта в

Я успешно импортирую контакт электронной почты с Yahoo API Oauth. И я вижу, что весь мой контактный адрес электронной почты указан на странице, когда я повторяю его. Однако при успешной печати электронного письма появляется сообщение об ошибке:

Trying to get property of non-object in globalses.php on line 295 А ТАКЖЕ
Undefined offset: 1 in globalses.php on line 295

Это код, который показывает эту ошибку:

  if (! empty($response)) {
list($info, $header, $body) = $response;
if ($body) {
//logit("callcontact:INFO:response:");
//print(json_pretty_print($body));
$yahoo_array = json_decode($body);

echo "<pre/>";
//print_r($yahoo_array);
foreach($yahoo_array as $key=>$values){foreach($values->contact as $keys=>$values_sub){
// echo '<pre/>';
// print_r($values_sub);
// echo $values_sub->fields[1]->value->givenName;
$email = $values_sub->fields[1]->value; //This is line 295

if(trim($email)!="")
$newList   .= $email.",";

}
}

}
$retarr = $newList."";
}

return $retarr;

[ОБНОВИТЬ] Результат печати $values->contact

Array
(
[0] => stdClass Object
(
[isConnection] =>
[id] => 50331977
[fields] => Array
(
[0] => stdClass Object
(
[id] => 50332026
[type] => email
[value] => [email protected]
[editedBy] => OWNER
[flags] => Array
(
)

[categories] => Array
(
)

)

)

[categories] => Array
(
)

[error] => 0
[restoredId] => 0
)

[1] => stdClass Object
(
[isConnection] =>
[id] => 41
[fields] => Array
(
[0] => stdClass Object
(
[id] => 63
[type] => email
[value] => [email protected]
[editedBy] => OWNER
[flags] => Array
(
)

[categories] => Array
(
)

)

)

[categories] => Array
(
)

[error] => 0
[restoredId] => 0
)

[2] => stdClass Object
(
[isConnection] =>
[id] => 50331986
[fields] => Array
(
[0] => stdClass Object
(
[id] => 50332036
[type] => email
[value] => [email protected]
[editedBy] => OWNER
[flags] => Array
(
)

[categories] => Array
(
)

)

[1] => stdClass Object
(
[id] => 50332037
[type] => guid
[value] => APQMLKWC3QLQRAMYZQABSF63ZA
[editedBy] => OWNER
[flags] => Array
(
[0] => Y360
)

[isConnection] =>
[categories] => Array
(
)

)

)

[categories] => Array
(
)

[error] => 0
[restoredId] => 0
)

[ОБНОВИТЬ]

         foreach($values->contact as $keys=>$values_sub){
if(property_exists($values_sub, 'value') && !is_array($values_sub->value))//echo $values_sub->fields[1]->value->givenName;
$email = $values_sub->fields[1]->value;

if(trim($email)!="")
$newList   .= $email.",";
[ОБНОВЛЕНИЕ] результат var_dump

    [email protected](31) "[email protected]"[email protected](30) "[email protected]"APQMLKWC3QLQRAMYZQABSF63ZAstring(26) "APQMLKWC3QLQRAMYZQABSF63ZA"[email protected](25) "[email protected]"[email protected](24) "[email protected]"IKN34TUEMHOJNOBUJQP5D2CBDQstring(26) "IKN34TUEMHOJNOBUJQP5D2CBDQ"[email protected](17) "[email protected]"[email protected](31) "[email protected]"[email protected](20) "[email protected]"[email protected](18) "[email protected]"[email protected](14) "[email protected]"[email protected](22) "[email protected]"[email protected](24) "[email protected]"[email protected](33) "[email protected]"

0

Решение

Вы получаете доступ к электронной почте по ее полям как:

 $email = $values_sub->fields[1]->value; //This is line 295

Когда вы видите первый элемент массива, нет никаких полей с ключом 1, так как это только значение в массиве. $fields[0].

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

Так что это должно быть что-то вроде этого:

foreach($values->contact as $keys=>$values_sub){
$fields = $values_sub->fields;
foreach($fields as $field){
if(property_exists($field,'value') && !is_array($field->value)){
echo (string) $field->value;
}
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]