Ajouter un préfixe à chaque élément d'un tableau PHP

j'ai un tableau PHP de nombres, que je voudrais préfixer avec un moins (-). Je pense que par l'utilisation d'explode et implose il serait possible, mais ma connaissance de php n'est pas possible de le faire réellement. Toute aide serait appréciée.

essentiellement, je voudrais partir de ceci:

$array = [1, 2, 3, 4, 5];

à ceci:

$array = [-1, -2, -3, -4, -5];

des idées?

55
demandé sur Dávid Horváth 2011-10-01 05:50:52

6 réponses

Simple

foreach ($array as &$value) {
   $value *= (-1);
}
unset($value);

sauf si le tableau est une chaîne de caractères:

foreach ($array as &$value) {
    $value = '-'.$value;
}
unset($value);
86
répondu Rohit Chopra 2016-04-19 20:48:36

une façon élégante de préfixer les valeurs des tableaux (PHP 5.3+):

$prefixed_array = preg_filter('/^/', 'prefix_', $array);

en Outre, c'est plus de trois fois plus rapide qu'un foreach .

84
répondu Dávid Horváth 2015-01-23 17:51:22

dans ce cas, réponse de Rohit est probablement le meilleur, mais le fonctions PHP array peut être très utile dans des situations plus complexes.

Vous pouvez utiliser array_walk() pour effectuer une fonction sur chaque élément d'un tableau modifier le tableau existant. array_map() fait presque la même chose, mais il renvoie un nouveau tableau au lieu de modifier le tableau existant, puisque il semble que vous voulez continuer à utiliser le même tableau, vous devriez utiliser array_walk() .

De travailler directement sur les éléments du tableau avec array_walk() , passer les éléments du tableau par référence ( function(&$item) ).

depuis php 5.3 vous pouvez utiliser la fonction anonyme dans array_walk:

// PHP 5.3 and beyond!
array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;

exemple pratique

si php 5.3 est un peu trop chic pour vous, il suffit d'utiliser createfunction() :

// If you don't have PHP 5.3
array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;

exemple pratique

62
répondu Peter Ajtai 2017-05-23 10:31:15

quelque chose comme ça ferait:

array_map(function($val) { return -$val;} , $array)
20
répondu JRL 2011-10-01 01:55:10
$array = "1, 2, 3, 4";
$array = explode( ',', $array );
foreach ($array as &$value){
    $value = '-' . trim($value);
}
$array = implode(', ', $array);   //output "-1, -2, -3, -4"
4
répondu BomAle 2015-01-21 04:31:10
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
0
répondu SarwarCSE 2016-09-27 13:02:07