web-dev-qa-db-fra.com

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

J'ai un PHP tableau de nombres, que je voudrais préfixer avec un moins (-). Je pense que grâce à l'utilisation d'exploser et d'imploser ce serait possible mais ma connaissance de php n'est pas possible de le faire. Toute aide serait appréciée.

Je voudrais essentiellement partir de ceci:

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

pour ça:

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

Des idées?

66
MBL

Simple:

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

Sauf si le tableau est une chaîne:

foreach ($array as &$value) {
    $value = '-' . $value;
}
unset($value);
92
Rohit Chopra

Une manière élégante de préfixer les valeurs des tableaux (PHP 5.3+):

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

En outre, cela est plus de trois fois plus rapide qu'un foreach.

116
Dávid Horváth

Dans ce cas, réponse de Rohit est probablement le meilleur, mais les fonctions de tableau PHP peuvent être très utiles dans des situations plus complexes.

Vous pouvez utiliser array_walk() pour exécuter une fonction sur chaque élément d'un tableau modifiant le tableau existant. array_map() fait presque la même chose, mais il renvoie un nouveau tableau au lieu de modifier celui existant, car il semble que vous souhaitiez continuer à utiliser le même tableau, vous devez utiliser - array_walk() .

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

Depuis php 5.3 vous pouvez utiliser une fonction anonyme dans array_walk:

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

Exemple de travail

Si php 5.3 est un pantalon un peu trop chic pour vous, utilisez simplement createfunction() :

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

Exemple de travail

66
Peter Ajtai

Quelque chose comme ça ferait:

array_map(function($val) { return -$val;} , $array)
20
JRL
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
3
SarwarCSE

Vous pouvez remplacer "rien" par une chaîne. Donc, pour préfixer un tableau de chaînes (et non des nombres tels que publiés initialement):

$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);

Cela signifie que, pour chaque élément de $ the_array, prenez la chaîne (de longueur nulle) à l'offset 0, la longueur 0 et remplacez-la par le préfixe.

Référence: substr_replace

1
Dan Chadwick

J'avais la même situation avant.

Ajout d'un préfixe à chaque valeur de tableau

function addPrefixToArray(array $array, string $prefix)
{
    return array_map(function ($arrayValues) use ($prefix) {
        return $prefix . $arrayValues;
    }, $array);
}

Ajout d'un suffixe à chaque valeur de tableau

function addSuffixToArray(array $array, string $suffix)
{
    return array_map(function ($arrayValues) use ($suffix) {
        return $arrayValues . $suffix;
    }, $array);
}

Maintenant, la partie test:

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

print_r(addPrefixToArray($array, 'prefix'));

Résultat

Array ([0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5)

print_r(addSuffixToArray($array, 'suffix'));

Résultat

Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)
0
Manojkiran.A