2013-12-20 2 views
1

Я испытываю странную ошибку из инструкции array_diff. Утверждение:array_diff дает ошибку преобразования Array в String в drupal

$query = array_diff($params, array('f' => array()));

и var_dump из $params является array(1) { ["f"]=> array(0) { } }

Это происходит в Друпал модуль под названием Islandora_solr_search и я получаю следующее сообщение об ошибке дважды, как показано ниже

Notice : Преобразование массива в строку в IslandoraSolrResults-> setBreadcrumbs() (строка 427 из /var/www/drupal/sites/all/modules/islandora_solr_search/includes/results.inc).

Примечание: Преобразование массива в строку в IslandoraSolrResults-> setBreadcrumbs() (строка 427 из /var/www/drupal/sites/all/modules/islandora_solr_search/includes/results.inc).

Кто-нибудь знает, почему это происходит?

ответ

2

array_diff вызывает ошибки при обнаружении массива внутри массива. См. comment by Michiel Thalen

Я могу предположить, что вы используете php 5.4 или новее. Вы можете увидеть это сами, проверяя вашу array_diff заявление в sandbox (вы можете переключаться версии PHP там)

Там также обсуждение в Drupal forums

Как QuickFix я предлагаю следующее:

$query = @array_diff($params, array('f' => array())); 

И в случае, если вы собираетесь использовать функцию array_diff с глубокими массивами, существует множество решений в сети, включая официальный ресурс php.net.