Я искал ответ на этот вопрос, который у меня есть с массивом, но пока нет ответа здесь и в Интернете.PHP-массив, переданный по ссылке?
У нас есть сайт TYPO3 с индексированным поиском, настроенным и установленным. Мы сканируем записи (~ 60000) с помощью расширения искателя. Все было настроено и работает нормально, но мы видели, что некоторые записи не показывались в результатах поиска.
Я отлаживал код TYPO3 и обнаружил, что некоторые слова не были связаны с его записями в таблице index_rel.
То, что я нашел, заключается в том, что, когда код запуска входит в метод indexTypo3PageContent() в строке 573, метод checkWordList() вызывается с массивом слов, переданных в качестве аргумента. Внутри метода отсутствует значение некоторых значений массива. Это где-то неправильно, потому что, если я прав, массив передается по значению, однако массив вне метода checkWordList() изменен, слова меньше. Поэтому некоторые слова не будут обратно проиндексированы в свою запись.
Я могу изменить код. Это очень просто. Однако я хочу понять проблему. Это ошибка PHP? Не передаются ли массивы PHP по значению? Я использую PHP 5.5 на Ubuntu.
Если кто-то может дать намек на то, что происходит, я буду очень признателен.
В любом случае, я отправляю сообщение об ошибке TYPO3.
Bests,
Б.
Это был дан ответ здесь уже http://stackoverflow.com/questions/2030906/are-arrays-in-php-passed-by-value-or-by-reference –
Рохит спасибо вы очень за ваш ответ. Думаю, тогда я нашел ошибку в PHP, потому что согласно ответам на этой странице массив передается по значению, когда он изменяется внутри функции. Однако что-то должно происходить, когда PHP анализирует файл, указанный в моем вопросе. Может быть, это потому, что unset находится внутри структур управления. Я пробовал код, как это до публикации: ' '5']; x ($ a); print_r ($ a); ?> ' Он работает, как и ожидалось. В этом файле нет. –
Где вы проверили массив снаружи? Метод 'checkWordList' предназначен только для вставки слов в отдельную таблицу, на которую ссылается таблица индексов. Поскольку параметры не передаются по ссылке, нет никаких шансов на изменение, о котором вы говорили. Я не могу воспроизвести проблему, которую вы описываете. – Michael