php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.01.2009, 21:26  
Neuer Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 7
erselbst befindet sich auf einem aufstrebenden Ast
Standard Array Reference

Ich möchte ein Array an einer Funktion als Reference übergeben. Leider bekomme ich nur den ersten Wert, nicht aber alle anderen. Ein print_r zeigt mir aber alle Werte an. Wie muss ich denn auf die Werte zugreifen?

PHP-Code:
(array) $a = array( 'mail' => 'test@test.de''name' => 'Sackratte'  );

test($a);

function 
test ( &$args ) {
    
print_r($args); // zeigt alle Keys/Value
    
echo "\"".$args['name']."\" <".$args['mail'].">\n"// Zeigt nur den ersten Wert an :-(

erselbst ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.01.2009, 21:30  
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

Zitat:
<".$args['mail'].">
Ein Tag wird eben nicht angezeigt. In den Browserquelltext schauen!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 10.01.2009, 21:30  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Du Scherzkeks ... schau mal in den Quelltext ... die Mail wird schon angezeigt ... < > machen aber daraus nen HTML Tag! Also Entities escapen dann gehts.

Man nikosch nich so schnell ...
Flor1an ist offline  
Alt 10.01.2009, 21:31  
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

Schneller
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 10.01.2009, 21:46  
Neuer Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 7
erselbst befindet sich auf einem aufstrebenden Ast
Standard

Verdammt, dit stimt natürlich. Hatte mir nur dieses Test-Skript geschrieben um eigentlich einen anderen zu finden.

Ich bekomme ein (pass parameter 1 by reference) Fehler und wollte wissen warum.

Code:
Fatal error: Cannot pass parameter 1 by reference in /var/www/php/sendmail/send.php on line 6
Habt ihr eine Idee woran das liegen kann?


Skript:
PHP-Code:
(object) $mail = new Sendmail();
$mail->recipient( array( 'name' => 'Sackratte''mail' => 'test@test.de' ) ); // Zeile 6 
Class:
PHP-Code:
class Sendmail {

    ....

    public function 
recipient ( &$args ) {

    (string) 
$name $args['name'] ? $args['name'] : NULL;
    (string) 
$mail $args['mail'] ? $args['mail'] : NULL;
    if ( 
$name $this->header "To: \"".$name."\" <".$mail.">\n";
    else 
$this->header "To: \"".$mail."\" <".$mail.">\n";

    }

    ....


erselbst ist offline  
Alt 10.01.2009, 21:53  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Weil du hier das Array erst in dem Funktionsaufruf erstellst, wird dann in die Funktion gesprungen ist das Array schon nicht mehr im Speicher weil es in keiner Variable liegt ... also kann man auch nicht mehr per Referenz drauf zugreifen. Du musst das Array also schon in einer Variable speichern und dann die Variable an die Funktion übergeben.

Im übrigen finde ich es sehr komisch wenn du vor jeder Variable den Typen schreibst ...
Flor1an ist offline  
Alt 10.01.2009, 22:00  
Neuer Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 7
erselbst befindet sich auf einem aufstrebenden Ast
Standard

Jetzt wo DU mir es erklärst, leuchtet das auch ein. Worauf soll der Zeiger zeigen, wenn keine Variable im Speicher damit belegt wird.

Dann macht es auch keinen Sinn in der Klasse methoden mit einer Referenz als Argumente zu definieren.

Nochmal vielen Dank für eure schnelle Antwort.
erselbst ist offline  
Alt 10.01.2009, 22:02  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wenn du das Array eh nicht veränderst dann lohnt sich das wohl eh nicht das ganze als Referenz zu übergeben. Bei so kleinen Arrays macht das nix aus dass das komplette Array "kopiert" wird.
Flor1an 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
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
call by reference mit array? Promaetheus PHP Tipps 2008 5 17.09.2007 21:50
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
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
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[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
cannot pass parameter 1 by reference, fatal error: cannot pass parameter 1 by reference in, php array reference, cannot pass parameter 1 by reference in, fatal error: cannot pass parameter 3 by reference in, php fatal error: cannot pass parameter 1 by reference, php fatal error: cannot pass parameter 1 by reference in, fatal error: cannot pass parameter 1 by reference, php array by reference, php cannot pass parameter 1 by reference, php referenz auf wert in array, \cannot pass parameter 1 by reference\, fatal error: cannot pass parameter 3 by reference, php call by reference array, php reference array, fatal error: cannot pass parameter 1 by reference in c:, cannot pass parameter 1 by referenc, annot pass parameter 1 by reference in, cannot pass parameter 1 by reference in debug message, cannot pass parameter 1 by reference in debug_message

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