php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.06.2006, 16:18  
Gast
 
Beiträge: n/a
Standard eval : Kann function mit array nicht aufrufen!?

Hallo,

php.net schweigt sich darüber aus, bei mir scheint es nicht zu gehen, ich erhalte einen ARRAY CAST ERROR:

PHP-Code:
eval('$data = myFunction('.$arr.');'); 
wobei $arr ein Array ist.

Ich nutze das, um user defined functions auf Datensatzwerte anwenden zu können. Manchmal ist ein einzelner Wert sinnvoll, manchmal aber auch der
gesamte Datensatz für eine Funktion notwendig (z.B. bei Aktionen, die von mehreren Werten eines Datensatzes abhängen).

What to do?
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.06.2006, 16:21  
Gast
 
Beiträge: n/a
Standard

Auch nicht zum ersten Mal passiert: Schließt man einen Beitrag mit "?" ab, zeigt das Forum "nt>", s.o.
 
Alt 01.06.2006, 16:24  
Gast
 
Beiträge: n/a
Standard

Benutz call_user_func oder call_user_func_array
http://de2.php.net/manual/en/ref.funchand.php
 
Alt 01.06.2006, 16:25  
Gast
 
Beiträge: n/a
Standard Re: eval : Kann function mit array nicht aufrufen!?

Mit einem
PHP-Code:
<?php
  
echo '$data = myFunction('.$arr.');';
?>
sollte Dir klar werden, wieso das ganze nicht läuft.

Was an dieser Stelle ein eval() erforderlich machen sollte, ist mir auch nicht klar.
 
Alt 01.06.2006, 20:38  
Gast
 
Beiträge: n/a
Standard

@ Bruchpilot: Ja, ich dachte, das könnte hinhauen. Wollte aber irgendwie nicht. Deine Idee war aber konstruktiv und gut. Ich weiß nun nicht woran
es lag, aber ich habe eine andere Lösung gefunden (s.u.)

@karl-150: Ja, ist klar geworden. Und wenn das eine Hilfe sein sollte, dann war das blöde Umständlich aber ich habe es nun.

Du hättest gleich schreiben können, dass es geht mit

PHP-Code:
<?php
  
echo '$data = myFunction($arr);';
?>
Wäre für Dich nicht mehr Arbeit, mir aber hätte das viel viel Zeit ersparrt.

Zitat:
Was an dieser Stelle ein eval() erforderlich machen sollte, ist mir auch nicht klar.
PHP-Code:
<?php
  
echo '$data = ' $userDefindeFunctionFromDatabase '($arr);';
?>
Ich denke, jetzt ist auch Dir klar, weshalb es ohne eval nicht geht, gel? Ich habe vorher versucht, es so einfach wie möglich darzustellen. Ich
vereinfache oft Postings hier, so dass sie snicht sinnvoll erscheinen, damit sie besser lesbar werden.
 
Alt 01.06.2006, 20:55  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von stani
Ich denke, jetzt ist auch Dir klar, weshalb es ohne eval nicht geht, gel?
Hier kann niemand hellsehen - mich eingeschlossen.
Zitat:
Zitat von stani
Ich habe vorher versucht, es so einfach wie möglich darzustellen. Ich
vereinfache oft Postings hier, so dass sie snicht sinnvoll erscheinen, damit sie besser lesbar werden.
Für mich klingt es nicht besonders sinnvoll, Postings so zu vereinfachen,
dass sie keinen Sinn mehr ergeben. Vereinfachen ist gut - der Sinn sollte
aber erhalten bleiben - ansonsten kommt es zu Missverständnissen u.ä.

Zitat:
Zitat von stani
Ich weiß nun nicht woran
es lag, aber ich habe eine andere Lösung gefunden
Trotzdem ist und bleibt der Weg über eval() in meinen Augen eine Krücke
und sollte besser anderweitig, z.B., wie oben von Bruchpilot vorgeschlagen,
per call_user_func() angegangen werden.
 
Alt 01.06.2006, 23:32  
Gast
 
Beiträge: n/a
Standard

Zitat:
Für mich klingt es nicht besonders sinnvoll, Postings so zu vereinfachen,
dass sie keinen Sinn mehr ergeben.
Belassmas dabei ok. Sinn ergab das schon. Und das war auch nicht die Frage. Aber verstehen kann ich Dich auch.

----------

Nun ist auch klar, weshalb das mit der call_user_func_array nicht ging. call_user_func wäre die richtige Funktion. Nun klappt es.

Du bist so gegen das eval... ich vermute das ist eine "teure" Funktion. Und schön ist deren Nutzung ohnehin nicht.

Ok, Thema gegessen. Thanx
 
Alt 01.06.2006, 23:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Mit [beliebige Programmiersprache]-Code [selbe beliebige Programmiersprache]-Code erzeugen ist immer unschön, da schwerer nachzuvollziehen und eben auch sehr oft - ich behaupte mal: immer - vermeidbar.

Und ganz ehrlich stani - auf die Idee kommen, sich den String, den du eval übergeben hast einfach mal selbst anzuschauen, hättest du selbst kommen können (eigentlich müssen). Aber ich denke das weißt du auch

Zitat:
Zitat von stani
Ok, Thema gegessen. Thanx
Schließ ich mich an
Zergling-new ist offline  
Alt 02.06.2006, 00:15  
Gast
 
Beiträge: n/a
Standard

Zitat:
eigentlich müssen
Ja, stimmt. Und eigentlich sogar peinlich, wenn ich mir das da oben anschaue. Ein Array als Wert übergeben zu wollen. Das haben wir schon vor 18 Jahren mit Pascal im Gym gelernt, dass das nicht gehen kann. Ich habe vor lauter PHP den Blick verloren und dachte an eine normale Übergabe einer Arrayvariablen.

Hätte ich auch getan, wenn ich eval zum ersten Mal verwendet hätte. Da es aber immer mit einfachen Werten funktionierte und mit dem Array nicht...... ah komm, keine Entschuldigung. Und ich bin eh etwas überarbeitet, sonst hätte ich nicht so lange gebraucht, um zu checken warum call_user_func_array mir das Array zerlegt. Mit frischen Zellen eigentlich innerhalb von Sekunden klar.

Seit Tagen 16 Stunden am Tag am schaffen. Wochenenden inklusive.

Ärgerlich.
 
Alt 02.06.2006, 00:28  
Gast
 
Beiträge: n/a
Standard

Hm, was hast Du mit call_user_func angestellt?

http://bruchpilot.br.funpic.de/beispiele/stani-1.php
 
 


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
[Erledigt] sql-Code an function übergeben und array mit Ergebniss zurück bekommen Felix PHP Tipps 2008 6 30.07.2008 16:59
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Prototype Ajax Array Datenmüll notyyy HTML, Usability und Barrierefreiheit 2 08.04.2008 10:57
JavaScript - Function aus Variabel aufrufen stefanjann HTML, Usability und Barrierefreiheit 6 04.09.2006 08:55
session array Timo Trallala PHP Tipps 2006 18 22.04.2006 13:45
array als Return wert aus einer Function heraus PHP-Fortgeschrittene 7 09.02.2006 22:46
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
function innerhalb einer function aufrufen. PHP Tipps 2005 18 21.01.2005 20:36
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
function.array aufrufen, php eval array, eval function erstellen

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