Ответ 1
Просто:
foreach ($array as &$value) {
$value *= (-1);
}
unset($value);
Если массив не является строкой:
foreach ($array as &$value) {
$value = '-' . $value;
}
unset($value);
У меня есть массив чисел PHP, который я бы хотел префикс с минусом (-). Я думаю, что использование взрыва и взрыва было бы возможно, но мои знания php на самом деле не могут это сделать. Любая помощь будет оценена.
По сути, я хотел бы перейти от этого:
$array = [1, 2, 3, 4, 5];
:
$array = [-1, -2, -3, -4, -5];
Любые идеи?
Просто:
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
.
В этом случае ответ Rohit, вероятно, лучший, но функции массива 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;
Что-то вроде этого:
array_map(function($val) { return -$val;} , $array)
$array = "1, 2, 3, 4";
$array = explode( ',', $array );
foreach ($array as &$value){
$value = '-' . trim($value);
}
$array = implode(', ', $array); //output "-1, -2, -3, -4"
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
Вы можете заменить "ничто" строкой. Таким образом, чтобы префикс массива строк (а не чисел, как первоначально отправлено):
$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);
Это означает, что для каждого элемента $ the_array возьмите строку (нулевой длины) со смещением 0, длиной 0 и замените ее префиксом.
Ссылка: substr_replace
У меня была такая же ситуация раньше.
function addPrefixToArray(array $array, string $prefix)
{
return array_map(function ($arrayValues) use ($prefix) {
return $prefix . $arrayValues;
}, $array);
}
function addSuffixToArray(array $array, string $suffix)
{
return array_map(function ($arrayValues) use ($suffix) {
return $arrayValues . $suffix;
}, $array);
}
Теперь часть тестирования:
$array = [1, 2, 3, 4, 5];
print_r(addPrefixToArray($array, 'prefix'));
Array ([0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5)
print_r(addSuffixToArray($array, 'suffix'));
Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)