mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 00:25 Benutzername: Passwort: Auto-Login

Thema: PHP: array_search mit $_GET[] vom 24.02.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP: array_search mit $_GET[]
Autor Nachricht
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Sa 24.02.2007 05:57
Titel

PHP: array_search mit $_GET[]

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Sa 24.02.2007 10:20
Titel

Antworten mit Zitat Zum Seitenanfang

Ist dir klar, was array_search macht?!
Was steht in $array drin? Mach mal ein
Code:
echo '<pre>'; print_r($array); echo '</pre>';
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Sa 24.02.2007 11:10
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Sa 24.02.2007 12:28
Titel

Antworten mit Zitat Zum Seitenanfang

ich vermute mal, das in deiner datei.txt inhalt steht wie

Code:
foo
bar
test
irgendwas


hättest du ein

Code:
print_r($array);


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

Code:
"foo" == "foo\n\r"


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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Sa 24.02.2007 12:32
Titel

Antworten mit Zitat Zum Seitenanfang

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 * Keine Ahnung... *

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
magicslider

Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht: Männlich
Verfasst Sa 24.02.2007 17:42
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
cRime
Threadersteller

Dabei seit: 07.05.2006
Ort: Berlin
Alter: 39
Geschlecht: Männlich
Verfasst Sa 24.02.2007 19:32
Titel

Antworten mit Zitat Zum Seitenanfang

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...!? * Nee, nee, nee *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
magicslider

Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht: Männlich
Verfasst So 25.02.2007 10:58
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


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.