2013-11-16 2 views
1

Я хочу знать, есть ли функция карты или аналогичная для использования с значениями массива? Скажем, у меня есть следующий массив ..Функция карты для изменения значений массива?

$nums = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 

Я хочу, чтобы умножить эти значения на 5, изменяя значение массива, где мой ожидаемый результат будет.

Array 
(
    [0] => 5 
    [1] => 10 
    [2] => 15 
    ...... and so on 
) 

Есть функция, которую я могу использовать для этого?

ответ

4

Да, и это называется array_map:

$nums = array_map(function($number) { return $number * 5; }, $nums); 

Или с array_walk:

array_walk($nums, function(&$number) { $number *= 5; }); 
+0

Я уверен, что простая старая петля сложнее. :) –

1

Вы можете легко перебирать массив.

foreach ($nums as &$value) { 
    $value *= 5; 
} 

Чуть более сложным, вы можете использовать array_map(), а также.

array_map(function($x) { return $x * 5; }, $nums); 
+0

'Еогеасп ($ НУМС как $ значение) $ НУМС [] = $ значением * 5;'? Я так не думаю. – Havenard

+0

'foreach ($ nums as & $ val) $ val * = 5;' – Havenard

+0

А, хороший вызов там –

1

Там нет никакой конкретной map функции, но вы можете создать свой собственный, используя array_map или ее foreach loop.

function map($n) { 
    return $n*5; 
} 

$nums = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
print_r(array_map(map, $nums)); 

Или

function map($n, $array) { 
    foreach ($array as &$val) { 
     $val *= $n; 
    } 
    return $array; 
} 

$nums = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
print_r(map(5, $nums)); 

Выход

Array 
(
    [0] => 5 
    [1] => 10 
    [2] => 15 
    [3] => 20 
    [4] => 25 
    [5] => 30 
    [6] => 35 
    [7] => 40 
    [8] => 45 
    [9] => 50 
) 
Смежные вопросы