Soru PHP - uyarı - Tanımsız özellik: stdClass - fix?


Bu uyarıyı hata günlüklerimde alıyorum ve bu sorunları kodumda nasıl düzelteceğimi öğrenmek istedim.

Uyarı: PHP Uyarı: Tanımsız mülkiyet: stdClass :: $ 440 satırında script.php'de $ kayıtları

Bazı kod:

// Parse object to get account id's
// The response doesn't have the records attribute sometimes.
$role_arr = getRole($response->records);  // Line 440 

Kayıtlar varsa yanıt

stdClass Object
(
    [done] => 1
    [queryLocator] =>
    [records] => Array
        (
            [0] => stdClass Object
                (
                    [type] => User
                    [Id] =>
                    [any] => stdClass Object
                        (
                            [type] => My Role
                            [Id] =>
                            [any] => <sf:Name>My Name</sf:Name>
                        )

                )

        )

    [size] => 1
)

Kayıtlar mevcut değilse cevap

stdClass Object
(
    [done] => 1
    [queryLocator] =>
    [size] => 0
)

Array_key_exists () işlevi gibi bir şey düşünüyordum ama nesneler için bir şey? Yoksa yanlış yöne mi gidiyorum?


44
2018-03-18 16:32


Menşei




Cevaplar:


if(isset($response->records))
    print "we've got records!";

100
2018-03-18 16:42



bir şekilde "veya" kullanılabilir mi? örnek: $ foo = $ bar-> foo veya "varsayılan"; - Hontoni
Bunu Elvis $ rol_arr = getRole ($ response-> records) ile yapabilirsin ?:: []; - Pierre
Hayat kurtarıcı. teşekkür ederim. - Si8
Bu çözümü bir foreach'de nasıl kullanabilirim? Örnek: foreach($product->images as $images) ? - Shadow_X


Property_exists'i kullanabilirsiniz
http://www.php.net/manual/en/function.property-exists.php


5
2018-03-18 16:38





Bu durumda şunları kullanırdım:

if (!empty($response->records)) {
 // do something
}

Özellik yoksa, çirkin bildirimler almayacaksınız ve aslında çalışmak için bazı kayıtlarınız olduğunu biliyorsunuz, yani. $ response-> kayıtları boş bir dizi değil, NULL, FALSE veya diğer boş değerler değildir.


5
2017-07-03 01:26





isset () üst düzey için iyidir, ancak boş () yuvalanmış değerlerin ayarlanıp ayarlanmadığını bulmak için çok daha kullanışlıdır. Örneğin:

if(isset($json['foo'] && isset($json['foo']['bar'])) {
    $value = $json['foo']['bar']
}

Veya:

if (!empty($json['foo']['bar']) {
    $value = $json['foo']['bar']
}

5
2018-04-17 15:48





Kullanmak isterseniz property_exists, sınıfın adını almanız gerekir. get_class()

Bu durumda şöyle olurdu:

 if( property_exists( get_class($response), 'records' ) ){
       $role_arr = getRole($response->records);
 }
 else
 {
       ...
 }

4
2017-09-19 09:13





Yanıtın kendisi kayıtların büyüklüğüne sahip gibi görünüyor. Kayıtların olup olmadığını kontrol etmek için bunu kullanabilirsiniz. Gibi bir şey:

if($response->size > 0){
    $role_arr = getRole($response->records);
}

2
2018-03-18 16:44





Bir üye veya yöntem aradığınıza bağlı olarak, belirli bir nesnede bir üye / yöntem olup olmadığını görmek için bu iki işlevden birini kullanabilirsiniz:

http://php.net/manual/en/function.method-exists.php

http://php.net/manual/en/function.property-exists.php

Daha genel olarak hepsini isterseniz:

http://php.net/manual/en/function.get-object-vars.php


1
2018-03-18 16:37





Bunun işe yarayacağını düşünüyorsanız:

if(sizeof($response->records)>0)
$role_arr = getRole($response->records);

yeni tanımlanmış proprties de dahil.


1
2017-12-24 20:58