Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
*verzweifel* in_array [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
*verzweifel* in_array


 
novara
05-06-2007, 12:50 
 
Hallo, baue seit Stunden an einer eigentlich ganz einfachen Aufgabe. Ich lade entsprechende Wert in ein Array ($ja), jetzt möchte ich prüfen ob alle Werte mit einem anderen Array ($array) übereinstimmen:


$wert = "ahk abnehmbar 7 polig";
echo "Aktueller Wert: <b>$wert</b><hr><br>";
$wert = split("[ .,:-]",$wert." ");

for($wi=0;$wi<(count($wert) - 1);$wi++)
{
if($wert[$wi]!="")
{
$array[] = strtolower(substr($wert[$wi],0,3));
$test .= ",".strtolower(substr($wert[$wi],0,3));
$erw_abfrage .= " || parser LIKE '%".strtolower(substr($wert[($wi + 1)],0,3))."%'";
}
}

$db->query("SELECT * FROM parsifal WHERE parser LIKE '%".$array['0']."%' $erw_abfrage");
if(!$db->num_rows()) { echo "Keine Übereinstimmung in der Datenbank gefunden"; }

while ($db->next_record())
{
$trenne_cache = explode("&",entferne_zeichen(strtolower($db->f("parser"))));
$ja = explode(",",str_replace("mit=","",$trenne_cache['0']));
$nein = explode(",",str_replace("ohne=","",$trenne_cache['1']));

foreach($nein as $nwert) { if(in_array($nwert, $array)) { $fehler++; } }
foreach($ja as $jwert) { if(in_array($jwert, $array)) { $erfolg++; } }

echo "Datensatz : <b>".$db->f("term_de")."</b>";
if(!isset($fehler) && $erfolg == count($ja)) { echo " -> Das Extra wurde übernommen"; }
echo "<br>Treffer: $erfolg von ".count($ja)." (Fehler: $fehler)<br><br>";

unset($fehler);
unset($erfolg);
}


Komischerweise wird aber nur jeder zweite Treffer gezählt ??!!
Hat jemand ne Idee (die Suche im Forum hat nichts gebracht)

 
wahsaga
05-06-2007, 12:54 
 
Und was bitte haben deine eigenen Debugversuche erbracht?

 
jahlives
05-06-2007, 12:58 
 
if(empty(array_diff($a,$array)){
echo 'Beide Arrays sind identisch';
}

 
novara
05-06-2007, 12:58 
 
Naja, komischerweise wird so gezählt:

1
1
2
2

usw. ich habe keine Erklärung. Ich habe an verschiedenen Stellen die Arrays ausgegeben und auch verglichen, auch wenn ich ($array) in den $test String lege und mit strpos beigehe wird auch

1
1
2
2

gezählt.
sehr merkwürdig

 
novara
05-06-2007, 14:24 
 
array_diff hilft mir leider nicht da in der variablen $wert beliebiger text stehen kann. Wichtig ist, das die "ja" Werte aus der Datenbank mit denen im Array übereinstimmen und die "nein" Werte nicht vorkommen. Ich muß die Treffer und Fehler zählen und vergleichen.

 
wahsaga
05-06-2007, 14:29 
 
Das ist immer noch keine Problembeschreibung, mit der ich was anfangen kann (bzw. in die mich hineinzudenken ich bereit wäre).

Erst bekommt man unkommentierten Code hingeklatscht, dann eine Minimalbeschreibung der Anforderung, die das Allermeiste immer noch unklar lässt - und damit soll man sich jetzt was ausdenken?

Leute, lernt endlich mal, eure Probleme halbwegs vernünftig und nachvollziehbar zu beschreiben.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:42 Uhr.