Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
cRime
Threadersteller
Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht:
|
Verfasst Sa 24.02.2007 05:57
Titel PHP: array_search mit $_GET[] |
|
|
Was zum teufel ist hier falsch:
file.txt:
zahlen 1 - 100
Code: | <?
$dir = "datei.txt";
$array = file($dir);
$i = $_GET["i"];
if($ab = array_search($i,$array))
{echo "yes";}
?> |
ich verstehe es nicht!!!
wenn in $i eine variable steht die in der txt enthalten ist, dann funktioniert es!!!!
Code: | <?
$dir = "simages/picturesets/9/9.txt";
$array = file($dir);
if($ab = array_search($_GET["i"],$array))
{echo "yes";}
?> |
funktioniert ebenfalls nicht!!!
das einzige was geht ist wie gesagt wenn ich z.b. $i = 8; gebe!!!
Zuletzt bearbeitet von cRime am Sa 24.02.2007 06:00, insgesamt 2-mal bearbeitet
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Sa 24.02.2007 10:20
Titel
|
|
|
Ist dir klar, was array_search macht?!
Was steht in $array drin? Mach mal ein
Code: | echo '<pre>'; print_r($array); echo '</pre>'; |
|
|
|
|
|
Anzeige
|
|
|
cRime
Threadersteller
Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht:
|
Verfasst Sa 24.02.2007 11:10
Titel
|
|
|
in array stehen die daten drin, wie gewohnt:
array
{
[...]
}
habs jetzt nicht nochmal ausprobiert, aber vorher schon.
mir ist auch klar was array_search macht.
ich bekomme ja einen wert zurück, aber nur wenn ich als ersten parameter eine konstante variable eingebe.
aber nicht bei $_GET
egal bei welcher variable.
wenn ich $_GET ausgebe, kriege ich ach den wert ausgegeben...
ich hab alles mögliche ausprobiert, ist aber alles auf das $_GET als ersten parameter zurück zu führen
naja, hauptsächlich war es für meine semesterarbeit geplant, aber ist eh schon zu spät. die post schließt um 12, ich hab die ganze nacht durchgeackert, bin müde, dvd ist schon gebrannt doku gedruckt, und nichts ist fertig geworden... wieder einmal!!!
würde mich aber trotzdem brennend interessieren warum es nicht klapt!!!
Zuletzt bearbeitet von cRime am Sa 24.02.2007 11:14, insgesamt 1-mal bearbeitet
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Sa 24.02.2007 12:28
Titel
|
|
|
ich vermute mal, das in deiner datei.txt inhalt steht wie
Code: | foo
bar
test
irgendwas |
hättest du ein
gemacht, und dir den quelltext angeschaut, hättest du gesehen, das dort höchstwahrscheinlich zeilenumbrüche stattfinden - demnach steht am ende jeder zeile ein \n\r.
wenn du jetzt
vergleichst, kommt logischerweise immer false raus. du musst also dein array aus der datei durchlaufen, und etwaige zeilenumbrüche entfernen. testweise hab ichs mal so gemacht.
inhalt der datei.txt
Code: | eins
zwei
drei
vier |
Code: | $dir = "datei.txt";
$array = file($dir);
foreach ($array as $v)
$arr[] = str_replace("\r\n", "", $v);
$a = array_search($_GET["i"], $arr);
var_dump($a); |
funktioniert 1a, hätte dir aber ein blick in die quelltext ausgabe deines scripts sicherlich auffallen müssen.
|
|
|
|
|
cRime
Threadersteller
Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht:
|
Verfasst Sa 24.02.2007 12:32
Titel
|
|
|
so oder so ähnlich
es stehen zahlen drin (wie oben schon gesagt)
und nochmal:
ich hab eine ausgabe mit print_r gemacht und es sind definitiv keine zeilenumbrüche drin (die funktion filtert die wahrscheinlich direkt raus, da ich das array direkt mit der datei füttere)
und auch wenn dort welche drin wären, bleibt immernoch die frage offen, warum funktioniert es wenn ich die variable vorher fest mache?
ich hab es auch in einer neuen php datei neu und ganz simpel geschrieben (4 - 5 zeilen), und es hat auch dort nicht funktioniert... übergabeparameter von hand eingegeben, auch nicht...!
edit:
kann das mal jemand von euch probieren?
dieser simple code dürfte doch wohl funktionieren!
bei mir zumindestens nicht
Code: | <?
$dir = "datei.txt";
$array = file($dir);
$i = $_GET['i'];
if($ab = array_search($i,$array))
{echo "yes";}
else
{echo "no";}
?> |
der code auf meinem server:
www.cross-creations.de/ch/a.php
variable: i
werte 1 - 8
in der datei:
ch/datei.txt
so, ich werde nun erstmal das nachholen was ich heute nacht nicht konnte... schlafen.
hab genug stress für heute. ich hoffe jemand hat ne gute nachricht für mich, also ich hab mich definitiv viel zu viel mit php beschäftigt diese woche.
ich mach pause!
gn8 @ all!!
Zuletzt bearbeitet von cRime am Sa 24.02.2007 12:40, insgesamt 5-mal bearbeitet
|
|
|
|
|
magicslider
Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht:
|
Verfasst Sa 24.02.2007 17:42
Titel
|
|
|
hi,
dein äpfel mit birnen vergleich kann immer nur in einem false enden,... dann widersprichst du dich am laufenden band selbst,...
zunächst ist mal wichtig, auf welchem betriebsystem und wie die datei erstellt wurde.
siehe:
Die Funktion file() ist identisch mit readfile(), außer dass die eingelesene Datei als Array zurückgegeben wird. Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei. Der Zeilenumbruch bleibt erhalten. Im Fehlerfall gibt file() FALSE zurück.
Anmerkung: Jede Zeile in dem resultierenden Array enthält das Zeilenende, weshalb Sie trim() verwenden müssen, falls der Zeilenumbruch nicht vorhanden sein soll.
Zuletzt bearbeitet von magicslider am So 25.02.2007 10:29, insgesamt 1-mal bearbeitet
|
|
|
|
|
cRime
Threadersteller
Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht:
|
Verfasst Sa 24.02.2007 19:32
Titel
|
|
|
hi, also file gibt zumindestens kein false zurück, das dürfte klar sein. das array wird gefüllt, und soweit ich weiss auch ohne zeilenumbruch.
verständnisfrage:
wie könnt ihr euch so sicher sein, dass ich zeilenumbrüche in jedem dieser arrayfelder habe, obwohl ich keins sehe.
zeilenumbrüche lassen sich meistens anmerken durch ein \n oder durch ein leerzeichen, da ich keins der beiden habe, verstehe ich das nicht !?
folgender simpler code:
Code: | <?
$dir = "datei.txt";
$array = file($dir);
print_r($array);
echo "<p>";
print_r(array_search(8,$array));
$i = $_GET['i'];
if($ab = array_search($i,$array))
{echo "yes";}
else
{echo "no";}
?> |
ausgabe:
Zitat: | Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 )
7no
|
es ist weder in der ausgabe des arrays, noch in der ausgabe des feldes mit dem schlüssel 7 ein zeilenumbruch zu erkennen!!!!
was mich allerdings jetzt stutzig macht, ist die tatsache, dass die ausgabe des arrays diesmal in einer zeile erfolgt, was vorher nicht der fall war.
sonst hatte ich immer eine formatierte ausgabe mittels zeilenumbrüchen...!?
|
|
|
|
|
magicslider
Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht:
|
Verfasst So 25.02.2007 10:58
Titel
|
|
|
hi,
der zeilenumbruch ist vom betrriebssystem abhängig: http://de.wikipedia.org/wiki/Zeilenumbruch
ob wirklich eine zahl enthalten ist, kannst du mit is_numeric(); prüfen.
du schreibst es geht, wenn du für $i einen integer setzt. also $i = 8;
also ist $i = $_GET['i']; dein problem.
teste mal:
Code: |
if($ab = array_search(round($_GET['i'],0),$array))
{echo "yes";}
else
{echo "no";}
|
oder teste ein typecasting auf $i = (int) $_GET['i'];
vielleicht ist das, dein problem: (float)8 <> (int)8
Zuletzt bearbeitet von magicslider am So 25.02.2007 11:19, insgesamt 4-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
Tutorial search!
Indexed Search Suchergebnisse?
Google Search in Chrome
[flash] Array aus PHP
AS Array durchlaufen
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|