php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.03.2007, 16:32  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard array_walk in Funktion

Angelegt an eine gute Idee für einen Code bin ich auf eine solche
Lösung gekommen. Interessanterweise liefert array_walk nur
1 zurück, egal was da verarbeitet wird. Ist es möglich, dass man aus einer
Funktion nicht referenzieren kann oder was läuft hier nicht richtig?
Ansonsten ist mir array_walk noch nicht wirklich untergekommen.

Sicherlich kann man das auch umständlich mit foreach oder ähnlichem
machen, aber ich denke das verbraucht bestimmt mehr Ressourcen oder nicht?

PHP-Code:
 <?php
function trimValue( &$value ) {
   
$value trim($value);
}
 
function 
cleanValue$row$con="\n"$ignore=NULL ){         
     if(!
is_array($row)){
         
$items explode($con$row);
     }    
     if( 
is_null$ignore ) ) {
         
$ignore = array(NULL'');
     }    
     if( !
is_array$ignore ) ) {
         
$ignore = array();
     }    
     
$return  array_diffarray_walk$items'trimValue' ), $ignore );
     
     if( 
is_array$row ) ) {
         return 
$return;
     }
     return 
implode$con$return );
}
?>
tinchen ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.03.2007, 17:04  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hallo,

wo genau liegt denn eigentlich Dein Problem?
Natürlich liefert array_walk nur 1 zurück. Genau genommen allerdings TRUE, weil die Funktion bool als Rückgabetyp hat.

Array_walk durchläuft ein Array. Es liefert aber kein neues Array zurück.

Erzähl mal, was Du machen willst und was hakt.

Wo soll $items eigentlich herkommen, wenn $row ein Array ist?
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 18.03.2007, 17:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

oder um es anders auszudrücken: array_walk liefert keinen rückgabewert, sondern verarbeitet bei bedarf den ersten parameter als referenz. alternativ kannst du array_map verwenden.

wenn du keine weitere funktionalität brauchst, müsste die angabe trim eigentlich auch genügen, ohne eine eigene funktion zu deklarieren.
nikosch ist gerade online  
Alt 18.03.2007, 17:25  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Bool ist ein Rückgabewert!
Den kann man zuweisen ohne dass es einen Fehler gibt.
Kein Rückgabewert würde anders aussehen.

Nur weil man einen ganz anderen Rückgabewert erwartet ist es doch wohl Quatsch zu behaupten, es wäre keiner da.
ts ts ts
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 18.03.2007, 17:36  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Das ist ja lustig, wo ist denn der Unterschied zu
http://de2.php.net/trim (zweites Beispiel: Example 2371)?


Zitat:
Wo soll $items eigentlich herkommen, wenn $row ein Array ist?
Jetzt wo du es sagst.


Zitat:
Erzähl mal, was Du machen willst und was hakt.
Ich möchte ein array oder eine Liste in einer Textarea nach dem jeweiligen Trenner
(in diesem Fall \n also Zeilenumbruch) zerlegen und die Elemente von z.B. " test " zu "test" bringen, dass ist eigentlich schon alles.
Gleichzeit möchte ich Eingaben wie Leerzeilen einfach killen.
tinchen ist offline  
Alt 18.03.2007, 17:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

dafür würde ja erstmal ein
PHP-Code:
<?php
return array_map('trim'explode("\n"$sTextarea));
?>
reichen
Zergling-new ist offline  
Alt 18.03.2007, 17:47  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Stimmt, das habe ich schon wieder vollkommen vergessen, dass ich jede phpFunktion
auch als Funktion verwenden kann. Das muss ich mir unbedingt merken. Allerdings
verstehe ich das angegebene Beispiel in Bezug auf die Antworten kein Stück.
Aus meiner Sicht habe ich das genau so gemacht wie im Manual. Und da sag noch
mal einer ich soll da reinschauen.
tinchen ist offline  
Alt 18.03.2007, 17:49  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Du hast es nichtmal annähernd so gemacht wie im Beispiel.
Du hast den Rückgabewert der Funktion weiterverwendet und nicht das veränderte Array.

Und je nach Aufrufparametern Deiner Funktion hast Du noch nichtmal ein Array übergeben.

Wie soll da was rauskommen, was wie erwartet aussieht?
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 18.03.2007, 18:05  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Zitat:
Und je nach Aufrufparametern Deiner Funktion hast Du noch nichtmal ein Array übergeben.
Na ja, da es mir zunächst nicht aufgefallen ist, wirst du dir denken könne, dass der
Fall gar nicht aufgetreten ist.

Demnach ist
array_walk($fruit, 'trim_value');
var_dump($fruit);

etwas anderes als
$temp = array_walk($fruit, 'trim_value');
var_dump($temp);

Sorry, aber so klar ist das auf dem ersten Blick gar nicht.
Da ich mit diesen Callbacks auf Funktionen noch nie was am Hut gehabt habe,
muss einem das doch mal gesagt werden. Ob du das so sagen musst, wie es bei mir
angekommen ist, ist ja wiederum eine ganz andere Sache.
tinchen ist offline  
Alt 18.03.2007, 18:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von tinchen
Ich möchte ein array oder eine Liste in einer Textarea nach dem jeweiligen Trenner
(in diesem Fall \n also Zeilenumbruch) zerlegen und die Elemente von z.B. " test " zu "test" bringen
Genau das würde mein Code-Schnipsel ja machen. Vielleicht habe ich dich aber auch nicht richtig verstanden.

Mach mal ein konkretes Beispiel.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
Array in rekursiver Funktion auslesen Gumfuzi PHP Tipps 2007 17 15.11.2005 12:01
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
Funktion() anwendung -bitte um Hilfe PHP Tipps 2004-2 17 08.12.2004 11:58
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array_walk return, array_walk trim, array_walk trim_value, explode array_walk, trim_value, array_walk php beispiel, trim_value array_walk, array_walk \trim_value\, array_walk within a function, array_walk foreach, trim_value php, performance foreach array_walk, php performance array_walk foreach, sql array_walk, array_walk() trim, http://www.php.de/php-tipps-2007/43716-array_walk-funktion.html, rückgabewert in array schreiben php array_walk, php funktion aufrufen return ignorieren, array_walk funktion an anderer stelle aufrufen, array_walk explode

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.