https://www.php-rocks.de/mitglieder/60-zrx1100.html
Registriert seit: 04.04.2018 | Themen: 1 | Beiträge: 2
Hallo zusammen,
Ich habe hier ein Script das
nutzt,diese wird als deprecated angezeigt.
Da ich nicht so viel Ahnung von PHP habe, wollte ich hier im Forum nachfragen, ob mir jemand einen Lösungsweg aufzeigen kann, habe zwar schon Stunden mit Google und Lösungsvorschlägen verbracht, aber leider führt keiner zum Erfolg, das liegt wohl auch daran, dass ich nicht alle Zusammenhänge verstehe.
PHP-Code:
function make_array_from_list($theList){ if ($theList != '') { $aList = explode(',', $theList); if (count($aList) > 0) { array_walk($aList, create_function('&$v,$k','$v = (trim( $v ) != "") ? strtolower( trim( $v ) ) : false;')); // Leerzeichen im auszuschließende-Ordner-Array entfernen $aList = array_unique( $aList ); // doppelte Einträge entfernen return array_filter($aList); } } return array(); }
Vielen Dank schon mal im voraus
zrx1100
https://www.php-rocks.de/mitglieder/2-arne-drews.html
Registriert seit: 18.03.2015 | Themen: 59 | Beiträge: 364
Bewertung:
14
PHP Selbsteinschätzung: Fortgeschrittene Kenntnisse
Hallo,
Ohne es getestet zu haben, denke ich aber, dass Du das array_walk gar nicht benötigst.
Du kannst array_filter mit zwei Parametern aufrufen, wobei der zweite eine Callback-Function ist, bspw:
PHP-Code:
return array_filter( $aList, 'trim' );
Das sollte für das, was Du vorhast eigentlich reichen, wenn ich das richtig überblicke.
Ansonsten kannst Du anstelle des Callback bei array_filter auch eine Anonyme Funktion verwenden.
Gruß Arne
https://www.php-rocks.de/mitglieder/15-fireweasel.html
Registriert seit: 20.03.2015 | Themen: 0 | Beiträge: 4
Bewertung:
1
PHP Selbsteinschätzung: Fortgeschrittene Kenntnisse
Ergänzend:
(07.04.2018, 04:04)zrx1100 schrieb: Ich habe hier ein Script das
nutzt,diese wird als deprecated angezeigt.
Da ich nicht so viel Ahnung von PHP habe, wollte ich hier im Forum nachfragen, ob mir jemand einen Lösungsweg aufzeigen kann, habe zwar schon Stunden mit Google und Lösungsvorschlägen verbracht, aber leider führt keiner zum Erfolg, das liegt wohl auch daran, dass ich nicht alle Zusammenhänge verstehe.
Seit PHP-Version 5.3 darfst du Function-Literale benutzen. Die machen (für deine Zwecke) das Gleiche wie create_function(), aber du darfst Parameter und Body so wie in einer gewöhnlichen Funktionsdeklaration niederschreiben. Das Einbetten in Zeichenketten entfällt. Aus
PHP-Code:
$anonymousFunction = create_function( '$arg0, $arg1', '// do something useful' );
wird
PHP-Code:
$anonymousFunction = function ($arg0, $arg1) { // do something useful };
In deinem Fall könnte das "verbesserte" Codeteilstück so aussehen:
PHP-Code:
function (& $v, $k) { $v = trim($v) !== '' ? strtolower(trim($v)) : false; }
... wobei sich die gesamte Funktion make_array_from_list() anderweitig sicher noch verbessern ließe.
https://www.php-rocks.de/mitglieder/60-zrx1100.html
Registriert seit: 04.04.2018 | Themen: 1 | Beiträge: 2
Hallo Arne
Vielen Dank für diesen Denkansatz, hab es nicht ausprobiert, da ich nicht genau wusste, wo ich diesen Codeschnipsel einsetzen sollte.
Hallo fireweasel
Vielen Dank für diesen Codeschnipsel, habe es eingesetzt und es funktioniert einwandfrei.
Danke für diese super Unterstützung, das ist nicht immer selbstverständlich.
Gruß
zrx1100
https://www.php-rocks.de/mitglieder/2-arne-drews.html
Registriert seit: 18.03.2015 | Themen: 59 | Beiträge: 364
Bewertung:
14
PHP Selbsteinschätzung: Fortgeschrittene Kenntnisse
16.04.2018, 11:49
Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2018, 12:08 von Arne Drews.
Hallo,
Ich glaube, das Verhalten, das Du willst, erreichst Du wesentlich unkomplizierter:
PHP-Code:
function ArrayFromStringList( $strlist, $delimiter=',' ) {
$aList = explode( $delimiter, $strlist ); return array_filter( $aList, 'trim' );
}
In Anwendung:
PHP-Code:
$aFromList = ArrayFromStringList( 'foo,bar' ); // array( [0] => 'foo', [1] => 'bar' ) $aFromList = ArrayFromStringList( 'foo' ); // array( [0] => 'foo' ) $aFromList = ArrayFromStringList( '' ); // array()
|