php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.11.2004, 16:17  
Gast
 
Beiträge: n/a
Standard for / foreach problem

huhu allerseits,

nach langer abstinenz habe ich doch mal ne frage.

und zwar hab ich ein problem mit einer schleife.
ich will in einem text einen platzhalter mit einem wert
aus einem array ersetzen und zwar innerhalb einer
schleife.
soweit kein problem, funzt alles wunderbar, bis auf
die tatsache, das anscheinend der fortschritt der schleife
(sei es nun for oder foreach) beim auswählen des
array-elements nicht greift.

als beispiel erstmal ne ausgabe, damit das prob verständlich wird:
Zitat:
0 Hallo 355edrfgds
1 Hallo 355edrfgds
2 Hallo 355edrfgds
3 Hallo 355edrfgds
array(4) {
[0]=> array(2) { [0]=> string(22) "wshfsdggffgs@fgsgfs.de" [1]=> string(10) "355edrfgds" }
[1]=> array(2) { [0]=> string(15) "blabal@web.de" [1]=> string(4) "andi" }
[2]=> array(2) { [0]=> string(16) "andi@testmail.de" [1]=> string(14) "Andi am Testen" }
[3]=> array(2) { [0]=> string(17) "dsgffgs@fgsgfs.de" [1]=> string(7) "dgasgsd" } }
der dazu relevante code ist :
PHP-Code:
foreach ($mailadresses as $key => $value) {
        
/* Namen einfügen */
        
echo $key;
        
$mail parsestring('{NAME}'$_SESSION['parsedmail'], $mailadresses[$key][1]);
        echo 
$mail.'
'
;
        
/* mail($value[0], $_SESSION['betreff'], $mail, $_SESSION['mailheaders']); */
    

ich hab natürlich schon diverse varianten durchprobiert
(also bitte keine lösungsvorschläge, die nur auf die benutzung
von for anstatt von foreach abzielen..), aber in jeder wurde
zwar die zählervariable (hier $key weil = index des arrays)
weitergezählt, aber halt bei "$mailadresses[$key][1]" oder
auch "$value[1]" bzw. "$mailadresses[$i][1]" im falle einer
forschleife, scheint der zähler bei 0 stehenzubleiben.

soooo, ich hoffe, ich sitze bloss auf meiner brille und sehe
deshalb den offensichtlichen fehler nicht, oder aber, falls
es doch so mysteriös sein sollte wie es mir vorkommt,
dass jemand nen workaround kennt =)

mfg bull3t
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.11.2004, 16:22  
Gast
 
Beiträge: n/a
Standard Re: for / foreach problem

Zitat:
Zitat von bull3t
huhu allerseits,

nach langer abstinenz habe ich doch mal ne frage.

und zwar hab ich ein problem mit einer schleife.
ich will in einem text einen platzhalter mit einem wert
aus einem array ersetzen und zwar innerhalb einer
schleife.
soweit kein problem, funzt alles wunderbar, bis auf
die tatsache, das anscheinend der fortschritt der schleife
(sei es nun for oder foreach) beim auswählen des
array-elements nicht greift.

als beispiel erstmal ne ausgabe, damit das prob verständlich wird:
Zitat:
0 Hallo 355edrfgds
1 Hallo 355edrfgds
2 Hallo 355edrfgds
3 Hallo 355edrfgds
array(4) {
[0]=> array(2) { [0]=> string(22) "wshfsdggffgs@fgsgfs.de" [1]=> string(10) "355edrfgds" }
[1]=> array(2) { [0]=> string(15) "blabal@web.de" [1]=> string(4) "andi" }
[2]=> array(2) { [0]=> string(16) "andi@testmail.de" [1]=> string(14) "Andi am Testen" }
[3]=> array(2) { [0]=> string(17) "dsgffgs@fgsgfs.de" [1]=> string(7) "dgasgsd" } }
der dazu relevante code ist :
PHP-Code:
foreach ($mailadresses as $key => $value) {
        
/* Namen einfügen */
        
echo $key;
        
$mail parsestring('{NAME}'$_SESSION['parsedmail'], $mailadresses[$key][1]);
        echo 
$mail.'
'
;
        
/* mail($value[0], $_SESSION['betreff'], $mail, $_SESSION['mailheaders']); */
    

ich hab natürlich schon diverse varianten durchprobiert
(also bitte keine lösungsvorschläge, die nur auf die benutzung
von for anstatt von foreach abzielen..), aber in jeder wurde
zwar die zählervariable (hier $key weil = index des arrays)
weitergezählt, aber halt bei "$mailadresses[$key][1]" oder
auch "$value[1]" bzw. "$mailadresses[$i][1]" im falle einer
forschleife, scheint der zähler bei 0 stehenzubleiben.

soooo, ich hoffe, ich sitze bloss auf meiner brille und sehe
deshalb den offensichtlichen fehler nicht, oder aber, falls
es doch so mysteriös sein sollte wie es mir vorkommt,
dass jemand nen workaround kennt =)

mfg bull3t
hi, ich setzte mal voll auf die brille (;

PHP-Code:
<?
$mailadresses 
= array();
$mailadresses[] = array('mail1''name1');
$mailadresses[] = array('mail2''name2');
$mailadresses[] = array('mail3''name3');

foreach (
$mailadresses as $key => $value) {
        echo 
$key;
        echo 
$value[0].', '.$value[1].'
'
;
    }
?>
gruss
Sike
  Mit Zitat antworten
Alt 19.11.2004, 16:32  
Gast
 
Beiträge: n/a
Standard

hm, die brille wars nicht, bloss die falsche stelle...
PHP-Code:
foreach ($mailadresses as $key => $value) {
        
/* Namen einfügen */
        
echo $key;
        
$name $mailadresses[$key][1];
        echo 
' '.$name.' ';
        
$mail parsestring('{NAME}'$_SESSION['parsedmail'], $name);
        echo 
$mail.'
'
;
        
/* mail($value[0], $_SESSION['betreff'], $mail, $_SESSION['mailheaders']); */
    

das hier produziert nun das :
Zitat:
0 355edrfgds Hallo 355edrfgds
1 andi Hallo 355edrfgds
2 Andi am Testen Hallo 355edrfgds
3 dgasgsd Hallo 355edrfgds
array(4) {
[0]=> array(2) { [0]=> string(22) "wshfsdggffgs@fgsgfs.de" [1]=> string(10) "355edrfgds" }
[1]=> array(2) { [0]=> string(15) "blabla@web.de" [1]=> string(4) "andi" }
[2]=> array(2) { [0]=> string(16) "andi@testmail.de" [1]=> string(14) "Andi am Testen" }
[3]=> array(2) { [0]=> string(17) "gdgffgs@fgsgfs.de" [1]=> string(7) "dgasgsd" } }
scheinbar haperts nicht an der schleife, sondern an der übergabe zur funktion.
die funktion kanns eigentlich nicht sein, dafür ist sie zu simpel
PHP-Code:
/* 
 Diese Funktion durchsucht einen String "haystack" nach "needle" 
 und ersetzt dieses ggf. durch "replacement".
 
 function parsestring(string $needle, string $haystack, string $replacement)
 */
function parsestring($needle$haystack$replacement) {
    
/* "needle" mit "replacement" ersetzen */
    
$pattern '/'.$needle.'/i';
    if (
$parsedstring preg_replace($pattern$replacement$haystack)) {
        return 
$parsedstring;
    } else {
        return 
NULL;
    }

ist doch alles zum mäusemelken hier
  Mit Zitat antworten
Alt 19.11.2004, 16:43  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
function parsestring($needle$haystack$replacement) {
    
$pattern '/'.$needle.'/i';
    if (
$parsedstring preg_replace($pattern$replacement$haystack)) {
        return 
$parsedstring;
    } else {
        return 
NULL;
    }
}

$mailtext "Hallo {NAME} alles frisch?";

$mailadresses = array();
$mailadresses[] = array('mail1''name1');
$mailadresses[] = array('mail2''name2');
$mailadresses[] = array('mail3''name3');

foreach (
$mailadresses as $key => $value) {
        echo 
$key."
"
;
        echo 
$value[0].', '.$value[1].'
'
;
        
$email $mailadresses[$key][0];
        
$name $mailadresses[$key][1];
        echo 
$email.', '.$name.'
'
;
        
$mail parsestring('{NAME}'$mailtext$name);
        print 
$mail."
<hr>"
;
    } 
produziert bei mir folgendes :
Code:
0
mail1, name1
mail1, name1
Hallo name1 alles frisch?
1
mail2, name2
mail2, name2
Hallo name2 alles frisch?
2
mail3, name3
mail3, name3
Hallo name3 alles frisch?
was ja auch richtig ist. schau mal obs sich der inhalt der session variable ($_SESSION['parsedmail']) ändert...

gruss
Sike
  Mit Zitat antworten
Alt 19.11.2004, 16:58  
Gast
 
Beiträge: n/a
Standard

erstmal superdickes danke für deine hilfe sike,
die session-variable wurde tatsächlich verändert...

interessant wäre nun noch zu wissen weshalb,
da sie nirgendwo in verbindung mit dem funktionsaufruf
stand und ja auch nicht per referenz übergeben wurde

naja, ein bischen optimierung beim session-handling
(ein session_destroy hier und noch eins dort, usw)
hat den fehler jedenfalls behoben.

das wär mal ne frage für meinen infoprof und seinen tollen
laboringenieur, ich wette dazu ham sie nix zu sagen
  Mit Zitat antworten
Antwort


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] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
foreach php zählervariable, smarty foreach string, php foreach problem, foreach array php einfügen, zählervariable im smarty-template, foreach php add string problem, smarty foreach zählervariable

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