bei folgendem tritt auf, dass selbst wenn ich kein Wert �bergebe, dass Array
einmal durchlaufen wird. Wenn ich Werte �bergebe ist der Wert +1.
echo "Ausgabe vor dem Array: $empfaenger <br/>";
$empfaenger_array=explode(",",$empfaenger);
//Hier wird der die Empf�ngeranzahl angelegt
$smsempfaenger = 0;
foreach($empfaenger_array as $temp)
{
SMS_versenden("benutzername","kennwort",utf8_decode($smstext),$temp,$service,$Absender);
$smsempfaenger ++;
echo "Schleife";
}
echo "Bis hierher geht
es!<br/>$empfaenger<br/>$empfaenger_array<br/>$smsempfaenger";
Kann mir jemand das erkl�ren?
Stefan
Was macht explode wenn der String 9e9329,74e837, aussieht, wird dann ein 3
zeiliges Array angelegt? So sieht es n�mlich momentan mir danach aus...
Stefan
Wieso testest du es nicht einfach?
Folgender Code:
<?php
$array = explode(",", "");
var_dump($array);
$array = explode(",", "1,2");
var_dump($array);
$array = explode(",", "1,2,");
var_dump($array);
?>
Folgende Ausgabe:
array
0 => string '' (length=0)
array
0 => string '1' (length=1)
1 => string '2' (length=1)
array
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '' (length=0)
Das Array enth�lt immer Anzahl Trennzeichen + 1 Ergebnisse. Daher selbst
wenn kein Trennzeichen vorhanden ist oder gar ein leerer String hast ein
Element im Array (n�mlich den kompletten (leeren) String).
--
Mit freundlichen Gr��en,
Christoph Herrmann
Wie du es ja schon bemerkt hast, wird für jedes Komma ein neuer Array-Key
angelegt, und wenn bis zum nächsten Komma (oder Stringende) nichts ist, dann
mit einem leeren Value. Das Selbe auch bei einem ganz leeren String, wo es
dann nur einen Key mit leeren Value gibt.
Man könnte jetzt natürlich "," am Ende abschneiden und dann noch testen, ob
das Array aus nur einem leeren Key besteht. Aber ich denke das ist einfacher
(und berücksichtigt auch "9e9329,,74e837,"):
>> foreach($empfaenger_array as $temp)
>> {
| if (empty($temp)) continue;
Gruß
Carsten
> echo "Ausgabe vor dem Array: $empfaenger <br/>";
> $empfaenger_array=explode(",",$empfaenger);
> foreach($empfaenger_array as $temp)
> {
> Kann mir jemand das erkl�ren?
explode() gibt bei einem leerem String ein Array mit einen leerem String
zur�ck. Daher wird genau einmal mit leerem String in $empfaenger_array[0]
ausgef�hrt:
foreach ($empfaenger_array as $temp)
ausgef�hrt. Teste ob $empfaenger etwas sinnvolles enth�lt.
Sam.
--
Sufficiently advanced incompetence is indistinguishable from malice
(J. Porter Clark)
Ist v�llig richtig.
$a=explode(',','9e9329,74e837,');
var_dump($a);
..
array
0 => string '9e9329' (length=6)
1 => string '74e837' (length=6)
2 => string '' (length=0)
var_dump($a) sagt dir genau was drin ist. Oder nimm einen Debugger.
Sam
"Carsten Wiedmann" <carste...@gmx.de> schrieb im Newsbeitrag
news:4b277c4a$0$6557$9b4e...@newsspool4.arcor-online.net...
> Wie du es ja schon bemerkt hast, wird fᅵr jedes Komma ein neuer Array-Key
> angelegt, und wenn bis zum nᅵchsten Komma (oder Stringende) nichts ist,
> dann
> mit einem leeren Value. Das Selbe auch bei einem ganz leeren String, wo es
> dann nur einen Key mit leeren Value gibt.
>
> | if (empty($temp)) continue;
>
Ich habe jetzt mal einen dump des arrays gemacht und siehe da, hier haben
wir was:
array(2) { [0]=> string(13) " 0123/456789" [1]=> string(1) " " }
Ich lese die Daten aus einer Textdatei, ich glaube schon fast, es kᅵnnte dar
Zeilenumbruch sein?!
Ich habe dann versucht mit einer If-Abfrage abzufangen, aber das klappt
nicht:
foreach($empfaenger_array as $temp)
{
if(!(empty($temp) || $temp="")){
SMS_versenden("kundennummer","kennwort",utf8_decode($smstext),$temp,$service,$Absender);
$smsempfaenger ++;
echo "Schleife+$temp+";
}
}
Wie kann ich es sonst abfangen?
Stefan
> if(!(empty($temp) || $temp="")){
> Wie kann ich es sonst abfangen?
Vielleicht durch $temp == " "?
a) ist $temp nicht "" (String mit Lᅵnge 0), sondern " " (String mit
Lᅵnge 1, enthᅵlt 1 nicht druckbares Zeichen)
b) $temp="" weist $temp den Wert "" zu, es ist kein Vergleich
HTH
Werner
Ich würde mal sagen, da hängt jeweils ein "\r" hintendran, und einmal noch
ein Leerzeichen vorne.
> foreach($empfaenger_array as $temp)
> {
> if(!(empty($temp) || $temp="")){
| $temp = trim($temp);
| if (empty($temp)) continue;
Gruß,
Carsten
Kennst du:
http://de3.php.net/trim
Viele Grᅵᅵe,
Sebastian
> Ich habe jetzt mal einen dump des arrays gemacht und siehe da, hier
> haben wir was:
> array(2) { [0]=> string(13) " 0123/456789" [1]=> string(1) " " }
Mach einfach folgendes:
$empfaenger_array = explode(
',',
rtrim(
',',
rtrim($empfaenger, "\r\n\t \0")
)
);
Das erspart Dir das Du bei jedem Durchlauf der Schleife prüfen must.
Die 2 rtrim() sind nötig da Du sonst u.U. Zeichen entfernst die garnicht
entfert werden sollen. (z.B. trim wär hier fehl am Platze)
MfG, Ulf
--
Die einzige Methode, gesund zu bleiben, besteht darin, zu essen, was
man nicht mag, zu trinken, was man verabscheut, und zu tun, was man
lieber nicht täte [Mark Twain]
> Hallo Stefan Becker! Du schriebst:
>
>> Ich habe jetzt mal einen dump des arrays gemacht und siehe da, hier
>> haben wir was:
>> array(2) { [0]=> string(13) " 0123/456789" [1]=> string(1) " " }
>
> Mach einfach folgendes:
>
> $empfaenger_array = explode(
> ',',
> rtrim(
> ',',
> rtrim($empfaenger, "\r\n\t \0")
> )
> );
Grr.. Muss natürlich so heissen:
$empfaenger_array = explode(
',',
rtrim(
rtrim($empfaenger, "\r\n\t \0"),
','
)
);
MfG, Ulf
--
Es würde gegen meine Programmierung verstoßen, eine Gottheit
zu personifizieren. [C-3PO]
>Hallo Stefan Becker! Du schriebst:
>
>> Ich habe jetzt mal einen dump des arrays gemacht und siehe da, hier
>> haben wir was:
>> array(2) { [0]=> string(13) " 0123/456789" [1]=> string(1) " " }
>
>Mach einfach folgendes:
>
>$empfaenger_array = explode(
> ',',
> rtrim(
> ',',
> rtrim($empfaenger, "\r\n\t \0")
> )
>);
>[...]
Eine Alternative w�re preg_split() mit gesetztem PREG_SPLIT_NO_EMPTY-
Flag.
Micha