@4iloveg
Full-Stack HTML Developer

Phpquery не создает массив, почему?

Все найденные примеры работы с этой библиотекой показывают что после поиска нескольких элементов они оказываются в массиве.
// Выберем списочные элементы в которых есть заголовок и текст новости
$list_elements = $document->find('.list1, .list2');
// Пробегаем по найденым элементам и делаем с ними что угодно.
foreach ($list_elements as $element)

Но я вчера как не пытался - не смог добиться подобного. Т.е. искомые находит, но все они хранятся как набор строк в $list_elemets а не как отдельные элементы массива.
Подскажите, в чем может быть причина, или при каких обстоятельствах данные окажутся в массиве а при каких иначе.
  • Вопрос задан
  • 922 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AlexKostin
require 'phpQuery-onefile.php';

$html = '<div class="list1">list1</div>
<div class="list2">list2</div>
<div class="list1">list3</div>
<div class="list2">list4</div>';

$document = phpQuery::newDocument($html);
// Выберем списочные элементы в которых есть заголовок и текст новости
$list_elements = $document->find('.list1, .list2');
// Пробегаем по найденым элементам и делаем с ними что угодно.
foreach ($list_elements as $element){
	echo pq($element)->text()."<br>\n";
}

Результат:
list1<br>
list3<br>
list2<br>
list4<br>


Все найденные примеры работы с этой библиотекой показывают что после поиска нескольких элементов они оказываются в массиве.

$list_elements это не массив, а объект, реализующий интерфейс Iterator.
И доступ к его свойствам можно получить через foreach, for, each.
Я подозреваю, Вы пытались посмотреть содержимое $list_elements с помощью print_r или чего-то подобного.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы