Добавьте префикс к каждому элементу массива PHP
у меня есть PHP-массив чисел, которые я хотел бы, чтобы префикс с минусом (-). Я думаю, что с помощью explode и implode это было бы возможно, но мои знания php не позволяют на самом деле это сделать. Любая помощь будет оценена по достоинству.
по существу я хотел бы пойти от этого:
$array = [1, 2, 3, 4, 5];
для этого:
$array = [-1, -2, -3, -4, -5];
какие идеи?
6 ответов:
простой
foreach ($array as &$value) { $value *= (-1); } unset($value);
если массив не является строкой:
foreach ($array as &$value) { $value = '-'.$value; } unset($value);
элегантный способ префикса значений массива (PHP 5.3+):
$prefixed_array = preg_filter('/^/', 'prefix_', $array);
кроме того, это более чем в три раза быстрее, чем
foreach
.
в этом случае ответ Рохита вероятно, лучший, но функции массива PHP может быть очень полезным в более сложных ситуациях.
можно использовать
array_walk()
чтобы выполнить функцию для каждого элемента массива, изменяя существующий массив.array_map()
делает почти то же самое, но он возвращает новый массив вместо изменения существующего, так как похоже, что вы хотите продолжать использовать тот же массив, вы должны используйтеarray_walk()
.для работы непосредственно на элементах массива с
array_walk()
, передать элементы массива по ссылке (function(&$item)
).начиная с php 5.3 вы можете использовать анонимную функцию в array_walk:
// PHP 5.3 and beyond! array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;
если php 5.3 немного слишком модные брюки для вас, просто используйте
createfunction()
:// If you don't have PHP 5.3 array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;