Ich habe ein PHP-Array von Zahlen, denen ich ein Minus (-) voranstellen möchte. Ich denke, durch die Verwendung von Explodieren und Implodieren wäre es möglich, aber mein Wissen über PHP ist nicht möglich, dies tatsächlich zu tun. Jede Hilfe wäre dankbar.
Im Wesentlichen möchte ich davon ausgehen:
$array = [1, 2, 3, 4, 5];
dazu:
$array = [-1, -2, -3, -4, -5];
Irgendwelche Ideen?
foreach ($array as &$value){ /* ... */ } unset($value);
.Eine elegante Methode zum Präfixieren von Array-Werten (PHP 5.3+):
$prefixed_array = preg_filter('/^/', 'prefix_', $array);
Darüber hinaus ist dies mehr als dreimal schneller als a
foreach
.quelle
preg_replace
, dass es ungefähr dasselbe tut, aber immer ein Array gleicher Größe mit dem unveränderten Element für Elemente zurückgibt, die nicht mit dem regulären Ausdruck übereinstimmen. Es ist auch ein bisschen leichter in Bezug auf die Versionsanforderungen (existiert in PHP4 gegenüberpreg_filter
PHP> = 5.3.0).$
Anker:preg_filter('/$/', '_suffix', $array);
preg_filter('/^(.*?)$/', '$0*', $array)
, es funktioniert, aber ich mag deins, es ist kurz.In diesem Fall ist Rohits Antwort wahrscheinlich die beste, aber die PHP-Array-Funktionen können in komplexeren Situationen sehr nützlich sein.
Sie können
array_walk()
eine Funktion für jedes Element eines Arrays ausführen, um das vorhandene Array zu ändern.array_map()
macht fast das gleiche, aber es gibt ein neues Array zurück, anstatt das vorhandene zu ändern, da es so aussieht, als ob Sie weiterhin dasselbe Array verwenden möchten, das Sie verwenden solltenarray_walk()
.Um direkt mit den Elementen des Arrays zu arbeiten
array_walk()
, übergeben Sie die Elemente des Arrays mit reference (function(&$item)
).Seit PHP 5.3 können Sie die anonyme Funktion in array_walk verwenden:
// PHP 5.3 and beyond! array_walk($array, function(&$item) { $item *= -1; }); // or $item = '-'.$item;
Arbeitsbeispiel
Wenn Ihnen PHP 5.3 eine etwas zu schicke Hose ist, verwenden Sie sie einfach
createfunction()
:// If you don't have PHP 5.3 array_walk($array,create_function('&$it','$it *= -1;')); //or $it = '-'.$it;
Arbeitsbeispiel
quelle
So etwas würde reichen:
array_map(function($val) { return -$val;} , $array)
quelle
print_r($array)
würde also$array
nach dem oben Gesagten unverändert angezeigt . - Wenn Sie den zurückgegebenen Wert$array
diesem zuweisen, erhalten Sie das Arbeit gut gemacht.$array = [1, 2, 3, 4, 5]; $array=explode(",", ("-".implode(",-", $array))); //now the $array is your required array
quelle
,
das resultierende Array mehr Elemente als das Original. Dies funktioniert für den OP-Fall, bei dem es sich nur um Zahlen handelt.Sie können "nichts" durch eine Zeichenfolge ersetzen. So stellen Sie ein Array von Zeichenfolgen voran (keine Zahlen wie ursprünglich angegeben):
$prefixed_array = substr_replace($array, 'your prefix here', 0, 0);
Das heißt, für jedes Element des $ -Arrays wird die Zeichenfolge (Länge Null) mit Offset 0 und Länge 0 verwendet und durch das Präfix ersetzt.
Referenz: substr_replace
quelle
Ich hatte die gleiche Situation vor.
Hinzufügen eines Präfixes zu jedem Array-Wert
function addPrefixToArray(array $array, string $prefix) { return array_map(function ($arrayValues) use ($prefix) { return $prefix . $arrayValues; }, $array); }
Hinzufügen eines Suffix zu jedem Array-Wert
function addSuffixToArray(array $array, string $suffix) { return array_map(function ($arrayValues) use ($suffix) { return $arrayValues . $suffix; }, $array); }
Nun zum Testteil:
$array = [1, 2, 3, 4, 5];
print_r(addPrefixToArray($array, 'prefix'));
Ergebnis
Array ([0] => prefix1 [1] => prefix2 [2] => prefix3 [3] => prefix4 [4] => prefix5)
print_r(addSuffixToArray($array, 'suffix'));
Ergebnis
Array ([0] => 1suffix [1] => 2suffix [2] => 3suffix [3] => 4suffix [4] => 5suffix)
quelle