Problem mit str_replace

user65w

Newbie
Registriert
März 2012
Beiträge
3
Ich will Zeichen "&" durch "leer" ersetzen.

Code:
PHP:
foreach($decode['SearchResponse']['Web']['Results'] as $res) { // foreach loop, to loop through each array value (result) as $res
echo ""; // display everything

$result = mysql_query("INSERT INTO old (name) VALUES (".$res['Title'] = str_replace("&", "", $res['Title']).")");
}

Leider kommt diesen Fehler:
Notice: Undefined index: Web in on line 82
Warning: Invalid argument supplied for foreach() in on line 82


Was kann ich machen?
 
das ist doch kein Problem bei str_replace, so weit kommt das Script gar nicht. Die Fehlermeldung ist doch eindeutig: Du machst ein foreach auf etwas, dass kein Array ist (um genau zu sein: ...['Web']... gibts nicht)
 
Es kommt keine Felhermeldung wernn ich str_replace entferne.
PHP:
$result = mysql_query("INSERT INTO old (name) VALUES ('".$res['Title']."')");

Wie kann ich nun str_replace einfügen?
 
Notice: Undefined index: Web in on line 82
Warning: Invalid argument supplied for foreach() in on line 82

Das sagt doch eindeutig, dass der Index, auf den du da zugreifen willst (Web) nicht definiert ist. Der Crash beim replace ist dann nur die indirekte Folge. Du versuchst da str_replace auf etwas aufzurufen, dass kein String ist, sondern bestenfalls ne NULL. Dass es ohne Replace nicht meckert liegt daran, dass die DB dann einfach ne NULL einträgt.

Reparier deine Schleife und deine Probleme sollten sich auflösen. Blindes foreach ist nicht clever. Wenn man nicht GANZ GENAU weiß, dass es eine Array-Variable ist (weil man sie selbst angelegt hat), dann sollte man ein foreach in ein if(is_array) kapseln.
 
Es wäre gut, wenn du den Code selber ändern könntest. Das wird mir sehr helfen.
 
Mit dem, was du hier gepostet hast, ist nichts zu machen. Der Fehler sitzt viel weiter oben. Du musst da ansetzen, wo $decode befüllt werden sollte. Irgendwo dort steckt der erste Fehler, der dafür sorgt, dass $decode['SearchResponse']['Web'] nicht definiert ist, dementsprechend $decode['SearchResponse']['Web']['Results'] kein Array ist, foreach eine Warnung wirft und str_replace dann eben endgültig die Hufe hoch nimmt.
 
Zurück
Oben