Получить неопределенное свойство: stdClass :: $ key ошибка при использовании JSON внутри DOM в плагине WordPress - PullRequest
0 голосов
/ 13 июня 2018

В основном functions.php файле моего плагина WordPress я использую следующий код

<?php
$str = '{"p_0":"New first content"}';
$json = json_decode($str);

$html = '<p>First</p><p>Second</p>';
$dom = new DOMDocument;
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_use_internal_errors(false);

foreach($dom->getElementsByTagName('p') as $index => $p) {
    $p->setAttribute('id','p_'.$index);
    $id = $p->getAttribute('id');
    if($json->{$id}) {
        $p->nodeValue = $json->{$id};
    }
}

echo $dom->saveXML($dom);
?>

Первый абзац переопределяется, но при этом я получаю ошибку

Undefined property: stdClass::$p_0 in ... // the line where if($json->{$id})

Какможно избежать ошибки?

1 Ответ

0 голосов
/ 13 июня 2018

У вас есть только один p_0 объект, и вы пытаетесь получить доступ к p_1, которого нет в вашем $str

Теперь, если вы просто хотите избежать ошибки, вы можете использовать isset()

вы можете заменить, если условие, как это

if(isset($json->{$id})) {
    $p->nodeValue = $json->{$id};
}
...