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?
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);
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
.
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;
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;
Quelque chose comme ça ferait:
array_map(function($val) { return -$val;} , $array)
$array = [1, 2, 3, 4, 5];
$array=explode(",", ("-".implode(",-", $array)));
//now the $array is your required array
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
J'avais la même situation avant.
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);
}
Maintenant, la partie test:
$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)