Невозможно получить доступ к свойству php stdClass для объекта класса std - PullRequest
0 голосов
/ 17 февраля 2020

Я передаю объект значения ACF std класса функции в качестве значения, и при попытке прочитать его в функции он отображается как объект, но когда я пытаюсь получить доступ к свойству Примечание: пытаюсь получить свойство «тип» необъекта

function createACFProductLicenses($acfData, $propertyString){
    $newData = array();
    if(isset($acfData->{$propertyString})){
        $data = (array)$acfData->{$propertyString};
        foreach ($data as $key => $value) {

            print_r($value);
            // prints out
            // stdClass Object
            // (
            //   [type] => standard
            //   [item_id] => 727
            // )

            print_r($value->type); // errors out -> Notice: Trying to get property 'type' of non-object
        }
    }
}
// example of how I'm calling it:
// $product['acf'] is an stdClass of acf properties
createACFProductLicenses($product['acf'], 'product_licenses');

1 Ответ

1 голос
/ 17 февраля 2020

«foreach» устанавливает структуру данных в $ key => $ value или [type] является $ key, а «standard» является $ value, поэтому вы не можете напечатать $ value-> type, потому что объект на самом деле 'type' => 'standard'. Также знайте, что «foreach» будет запускать ваш код для каждого элемента объекта, как для массива ana, поэтому вы не можете просто напечатать указанное значение c, если у вас другой ключ $.

Если Вы хотите отобразить все элементы, используйте это:

print_r($key.':'.$value) // this will print:  type : standard

Или, если вы хотите распечатать только элемент [Тип] Попробуйте: insted of this

 if(isset($acfData->{$propertyString})){
        $data = (array)$acfData->{$propertyString};
        foreach ($data as $key => $value) {
            print_r($value->type); // errors out -> Notice: Trying to get property 'type' of non-object
        }
    }
}

Попробуйте это

if(isset($acfData->{$propertyString})){
        $data = (array)$acfData->{$propertyString};
        print_r($data['type']);
    }
}

Надеюсь, это поможет, дайте мне знать, если это не сработало.

...