PHP Tipo di offset illegale

Warning: Illegal offset type in /email_HANDLER.php on line 85 $final_message = str_replace($from, $to, $final_message); preg_match_all('/<img[^>]+>/i',$final_message, $result); $img = arrays(); foreach($result as $img_tag) { preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[$img_tag]); //LINE 85 } 

Chiunque? Sto per strapparmi i capelli per questo …

ecco il mio var_dump di $ img_tag

 arrays(1) { [0]=> string(97) "<img alt='' src='http://pete1.netsos.com/site/files/newsletter/banner.jpg' align='' border='0px'>" 

Supponendo che $img_tag sia un object di qualche tipo, piuttosto che una string corretta, lancia $img_tag su una string all'interno del []

 preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[(string)$img_tag]); //------------------------------------------------------------------^^^^^^^^^ 

Alcuni tipi di oggetti, in particolare SimpleXMLElement , restituiscono una rappresentazione di string per print/echo tramite il metodo magico __toString() , ma non possono essere considerati stringhe regolari. I tentativi di utilizzarli come chiavi di arrays producono l'errore di illegal offset type non valido a less che non li si lanci su stringhe appropriate tramite (string)$obj .

Vedi il primo commento su questo bug report PHP :

Non è ansible utilizzare matrici o oggetti come chiavi. In caso contrario, verrà visualizzato un avviso: Tipo di offset non valido. Controlla il tuo codice.

Assicurati che $img_tag sia del tipo di variabile appropriato.

$result è arrays a 2 size. Quindi, $img_tag dovrebbe essere un arrays.

Ma solo interi e stringhe possono essere usati come offset

 foreach( $result[0] as $img_tag) 

Funziona