2014-12-09 2 views
0

Я пытаюсь применить функцию к множеству животных. Я хочу их ободрить.Почему array_map не работает?

$arr = array('cat', 'dog'); 

function makemebold($item) 
{ 
    return "<b>$item</b>"; // or something more interesting... 
} 

Давайте проверим исходный массив:

// dump original array 
var_dump($arr); echo '<br>'; 

возвращений:

array(2) { [0]=> string(3) "cat" [1]=> string(3) "dog" } 

Теперь давайте применим array_map:

array_map($arr, 'makemebold'); 
var_dump($arr); echo '<br>'; 

Ничего не делать:

array(2) { [0]=> string(3) "cat" [1]=> string(3) "dog" } 

Теперь array_walk:

array_walk($arr, 'makemebold'); 
var_dump($arr); echo '<br>'; 

То же, что и выше - никаких изменений:

array(2) { [0]=> string(3) "cat" [1]=> string(3) "dog" } 

Что я делаю неправильно?

+0

возможно дубликат [Разница между массивом \ _MAP, массив \ _walk и массив \ _filter] (http://stackoverflow.com/questions/3432257/difference-between-array-map-array-walk-and -array-filter) –

ответ

1

array_map не модифицирует входной массив, он возвращает новый массив с результатами вызова функции для каждого элемента ввода.

$bold_arr = array_map('makemebold', $arr); 
var_dump($bold_arr); echo '<br>'; 
+0

Я получаю: 'PHP Warning: array_map() ожидает, что параметр 1 будет действительным обратным вызовом, класс« cat »не найден» –

+1

У вас были аргументы для 'array_map' назад, и я тупо копировал что. – Barmar

+0

Уг, укушенный несогласованным аргументом. Благодарю. –

Смежные вопросы