drupal - почему $ node-> таксономия является массивом

0

кто-то написал этот код.

 foreach ($node->taxonomy as $term) {
 $tids[] = 't.tid = %d';
  $args[] = $term->tid;
 }

как он знает, что в foreach "$ node → таксономия" - это массив? и когда я его зацикливаю, foreach ($ node → таксономия как $term) { } выход, который я получаю, будет значением $term. Я не знаю, как это происходит в "t.tid =% d" и "$ term- > tid. спасибо.

Теги:
loops
drupal
drupal-6

3 ответа

4
Лучший ответ

В коде, связанном с Drupal, a $node почти всегда является объектом, созданным функцией node_load(). Поскольку каждый модуль имеет возможность добавлять свои свойства к этому объекту, очень сложно найти центральную документацию этих свойств.

По опыту и проверке переменных опытные разработчики Drupal знают, что когда set $node->taxonomy всегда является массивом термина-объекта (возвращаемого taxonomy_get_term()), индексированные их соответствующими идентификаторами (с именем tids, для Term ID). Этот массив устанавливается taxonomy_nodeapi() при $op == 'load' и создается taxonomy_get_terms().

Вопрос дает небольшую информацию, но мы можем предположить, что цикл предназначен для создания двух массивов, используемых для создания запроса к базе данных, который фильтрует столбцы tid, соответствующие тем, которые имеют объект $node. Поскольку данные терминов уже хранятся в элементах $node->taxonomy, давайте надеяться, что этот запрос не будет использоваться для повторной загрузки терминов для отображения некоторых их имени и/или описания. Сбор "t.tid =% d", вероятно, плохая идея, запрос будет лучше строить с помощью одного "tid in (". db_placeholder($args).)) Предложение WHERE после сбора всех tids в $args.

0

Вопрос очень неясен. Все элементы под объектом node являются массивами. Вы можете проверить это самостоятельно, используя:

print_r($node);
die;

Или используя любой отладчик PHP.

для foreach, это очень просто foreach... Я не понимаю, в чем проблема с этим.

0

t.tid - это просто SQL-запрос. % d является заполнителем для $args [], который состоит из $term- > tid. Он похож на эту структуру: PDO-соединения.

  • 0
    Drupal 6 не использует PDO.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню