php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.06.2007, 12:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard array_map mit Argumenten

Hi,

bin gerade am Überlegen wie ich am schnellsten Elemente eines Arrays mit einer Funktion durchlaufe, allerdings soll diese Funktion mehrere Parameter akzeptieren. Konkretes Beispiel: mysql_real_escape_string

array_map('mysql_real_escape_string', $values);

Schön und gut, leider kann ich mysql_real_escape_string() jetzt nicht noch die Connection mitübergeben. Was eine Schleife ist weiß ich

array_walk mit einer create_function wäre vielleicht auch möglich, muss aber auf eine private Objekteigenschaft innerhalb dieser Funktion zugreifen können (den Connection-Link eben).
Zergling-new ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.06.2007, 12:21  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Hallo Zergling,

das Problem hatte ich auch, allerdings habe ich die Escape-Funktion dann in die MySQL-Klasse eingebettet. Da ich sowieso mit einer persistenten Verbindung arbeite, war die Verfügbarkeit des Objekts kein Problem.
PHP-Code:
array_map(array('DB_MySQL','escapeString'),$this->aPost);

class 
DB_MySQL... {

__construct() {
//...
}
public function 
escapeString($sString) {

            if(
get_magic_quotes_gpc()) {

           
$sString        stripslashes($sString);

            } else {

           
$sString       $sString;

            }

       
$sString = @mysql_real_escape_string($sString);

       return 
$sString;

      }

So, ich hoffe, dass ich jetzt nicht komplett an dir vorbeigeschrieben hab.

Gruß


*EDIT:
Habe eben noch kurz bei php.net vorbeigeschaut:
http://de.php.net/manual/en/function...-map.php#56190

Da gibts die Funktion array_smart_map - die eigentlich einen anderen sinn hat, aber könnte man nicht einfach diese Funktion so manipulieren, dass der erste übergebene Parameter die aufzurufende Funktion - und die nächsten Parameter die Argumente sein sollen, die in die Funktion geschmissen werden sollen? Ich glaube, das wär' einen Versuch wert!
pepe24 ist offline  
Alt 13.06.2007, 17:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

spricht irgendwas dagegen array_walk () zu benutzen ?
nikosch ist gerade online  
Alt 14.06.2007, 06:53  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Code:
public function escapeString($sString)
wird hier zu einem Fehler führen, da die Übergabe eines Arrays die statische Verwendung einer Funktion einer Klasse impliziert...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 14.06.2007, 12:11  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Zitat:
wird hier zu einem Fehler führen, da die Übergabe eines Arrays die statische Verwendung einer Funktion einer Klasse impliziert...
Hallo dr.e, Deinen Einwand verstehe ich nicht ganz. Es wird doch gar kein Array übergeben!
pepe24 ist offline  
Alt 14.06.2007, 20:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Ich versteh das Problem immer noch nicht richtig. Kannst Du noch 'was konkreter werden Zergling?
nikosch ist gerade online  
Alt 15.06.2007, 03:32  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

array_walk ist mir etwas suspekt, eventuell hülfen mir Reflections, ich werde mal drüberschauen, wahrscheinlich hilft mir aber auch schon die von pepe24 genannte array_smart_map() Funktion, mal schauen. Ich melde mich.
Zergling-new ist offline  
Alt 15.06.2007, 14:37  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Zitat:
Zitat von Zergling
eventuell hülfen mir Reflections,
heißt das nicht hülften ?

Ich weiß zwar nicht, ob Du das meinst, aber zumindest in php 4 funktioniert das so:

PHP-Code:
<?

class dyn
  
{
  var 
$p=5;

  function 
do_walk (& $a)
    {
    
$a $a $this->p;
    }

  function 
do_map ($a)
    {
    return (
$a $this->p);
    }
  }

$dyn = new dyn;

$array = array (1,2,3,4);

// mit array_map
print_r (array_map (array ($dyn 'do_map') , $array));

// mit array_walk
array_walk ($array , array ($dyn 'do_walk'));
print_r ($array);
nikosch ist gerade online  
Alt 15.06.2007, 15:08  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Hallo nikosch77,

naja, das ist ja mehr oder minder genau das beispiel, das ich gemacht habe!
Was Zergling braucht ist noch ein zusätzliches Funktionsargument für die (in diesem Falle) do_map / do_walk Funktion. (jedenfalls nach meinem Verständnis seines Problems.)

Gruß
pepe24 ist offline  
Alt 15.06.2007, 15:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Sorry, Du hast natürlich recht. Aber:
Zitat:
bool array_walk ( array &array, callback funcname [, mixed userdata] )
Deswegen auch meine Frage nach dem eigentlichen Problem. Außer dem Unbehagen, das array_walk () Zergling offenbar bereitet.
nikosch ist gerade online  
 


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
shell script dynamische anzal von argumenten noskule Server, Hosting und Workstations 5 01.08.2006 18:36
While schleife mit 2 Argumenten ? PHP Tipps 2006 5 09.03.2006 15:15
GROUP BY mit mehreren Argumenten? suendesizer Datenbanken 3 18.03.2005 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array_map argumente an funktion, array_map mit parameter

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:34 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.