Проблема с explode и in_array в PHP, почему может не работать?
Доброй ночи!
Есть две переменных:
echo gettype($newsCategory); — определяется как массив (это и правда массив :)
echo gettype($k_type); — строка (это и правда строка :-)
После этого пытаюсь найти в массиве нашу строку.
if ( in_array( $k_type, $newsCategory ) ) {
Получаю ошибку:
ErrorException: Warning: explode() expects parameter 2 to be string, array given in
Сначала вызываю функцию
echo getTS_news(0, 'newsResidency');
Вызывается функция
function getTS_news ($newsAmount, $newsCategory){
Потом вызываю
$newsCategory = explode( ',' , $newsCategory );
До этого места все работает корректно, но как только вызываю следующую строку, то ругается на строку в которой explode:
if ( in_array( $k_type, $newsCategory ) ) {
Потом вызываю $newsCategory = explode( ',' , $newsCategory );
замени на:
if (is_array($newsCategory)) die('Интересно зачем я в explode передаю массив, вместо строки вторым параметром?');
$newsCategory = explode( ',' , $newsCategory );
Выполнил строку с die(), но оно не умерло, так как это строка. Код валидно идет дальше до строки, в которой появляется is_array и на этой строке начинает ругаться выше на строку с explode.
Заменил. Теперь останавливается. :-((( Не понятно в какой момент строка превратилась в массив. :-( Разве, если строка пришла как параметр функции она становится массивом?
AlikDex: проверил еще раз, действительно, если делать explode в туже переменную, то дальше гарантированно получаю ошибку, если делать в новую переменную, то дальше все работает. Большое спасибо вам!