Почему array_map выдает Warning?

249
02 мая 2017, 08:09

Застрял на простейшем скрипте, хочу уже разобраться с array_map

$matches[1] = array_map("add_domain", $matches[1]);
...
function add_domain($item)
   {
   return 'http://berserktcg.ru?replay=/replays/show/10/'.$item;
   }

Выдает Warning: array_map() expects parameter 1 to be a valid callback, function 'add_domain' not found or invalid function name in ...

vardump($matches[1]):

array(2) { [0]=> string(13) "1023155_26616" [1]=> string(13) "1023155_26616" } 

Где моя ошибка? P.S. PHP Version 5.4.16

Answer 1

Я предполагаю,что вы случайно загнали обьявление функции, в какой-нить блок if. К сожалению, есть подобная возможность писать следующие конструкции в PHP:

if (1!=1) {
    function test() {
        echo 1;
    }
}

Следовательно вызвать функцию test в указанном случае не получится, так как ее определение возможно только при наступлении условия.

Проверьте, что функция не находится в какой-либо подобной управляющей конструкции. Приведенный вами код исполняется корректно, при условии конечно, что $matches[1] это массив, иначе требуется передавать просто $matches.

Answer 2

Возможно Вы используете функцию внутри класса, тогда Вам следует вызывать array_map таким образом:

array_map($this->add_domain(), $matches);

Кроме того, array_map в Ваше случае не сработает, так как вторым параметром функции должен быть массив, а у вас его элемент (строка).

Answer 3

Да вeрно подметил товарищ @GlebKemarsky,и походу обсуждения тоже были в правильном направлении.

Но самым универсальным способом является: В вашем примере переставить ее выше чем то место где она вызывается.Чтоб не была заключена ни в какoм блокe условий.

<?php
//самое начало файла 
function add_domain($item)
{
     return 'http://berserktcg.ru?replay=/replays/show/10/'.$item;
}
.....
$matches[1] = array_map("add_domain", $matches[1]);
READ ALSO
ajax pagination pushState

ajax pagination pushState

Пытаюсь использовать постраничную навигацию с использованием History API, Ajax и плагина SimplePagination, но вот как правильней будет, у меня не получается,...

284
Шорткод с аттрибутами, в которых есть пробел

Шорткод с аттрибутами, в которых есть пробел

По умолчанию wordpress разбивает параметры шорткода по пробелу, те

224
Как отправить данные из QLineEdit в БД по нажатию кнопки в Qt?

Как отправить данные из QLineEdit в БД по нажатию кнопки в Qt?

Есть программа, в которой три поля QLineEdit, в них пользователь записывает некую информацию

233