Определить, в объекте массив объектов или один объект

96
20 февраля 2022, 12:30

Есть объекты со следующим содержимым:

С массивом объектов:

SimpleXMLElement Object
(
    [Предложение] => Array
        (
            [0] => SimpleXMLElement Object 
                ( [Ид] => id )
            [1] => SimpleXMLElement Object
                ( [Ид] => id )
         )
)

И с одним объектом:

SimpleXMLElement Object
(
    [Предложение] => SimpleXMLElement Object
        ()
)

Как определить каждый из них?

Проверки на is_array(), is_object и isset( $obj -> Ид ) не работают.

Answer 1

Полагаю, в вашем случае вы можете использовать метод count (не тот count, что считает элементы в массиве).

Хотя на самом деле, вы как минимум можете итерироваться и по одному объекту и по массиву одним и тем же кодом:

$s = '<rt>
    <el>1</el>
</rt>';
$x = simplexml_load_string($s);
foreach ($x->el as $el) {
    var_dump($el);
}
$s = '<rt>
    <el>2</el>
    <el>3</el>
    <el>4</el>
</rt>';
$x = simplexml_load_string($s);
foreach ($x->el as $el) {
    var_dump($el);
}
Answer 2
$array=array
(
    "Предложение" => array(
            "0" => 
                array( "Ид" => "id" ),
            "1" => array( "Ид" => "id" )
         )
);


$arr2=array(
    "Предложение" => array()
);
function get_lvl(array $array) {
    $max_lvl = 1;
    foreach ($array as $value) {
        if (is_array($value)) {
            $lvl= get_lvl($value) + 1;
            if ($lvl> $max_lvl) {
                $max_lvl = $lvl;
            }
        }
    }
    return $max_lvl;
}
if(get_lvl($array)>"1"){
echo "массив имеет вложенность".get_lvl($array);
}
READ ALSO
React вывести объект с массивами объектов

React вывести объект с массивами объектов

Не получается пройтись по объекту и вывести списком всех пользователейКак это можно лучше сделать?

95
Простейший вопрос от новичка. JQuery. Мало кода

Простейший вопрос от новичка. JQuery. Мало кода

Вот есть такой простенький скрипт, который при выборе инпута подсвечивает надпись возле негоНо этот скрипт подсвечивает все лэйблы на странице

96
js infinite loop

js infinite loop

Попал в бесконечный луп с таким фильтром во vuejs:

71
Как зацыклить уже имеющийся цикл в JavaScript&#39;e

Как зацыклить уже имеющийся цикл в JavaScript'e

Дали задание,имеется сайт с 1000+ страницами и на каждой из странице есть элемент который нужно нажатьЯ сделал цикл который ищет и нажимает...

94