PHP Недопустимый тип смещения

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 = array(); foreach($result as $img_tag) { preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[$img_tag]); //LINE 85 } 

Кто угодно? Я собираюсь вырвать мои волосы из-за этого …

вот мой var_dump из $ img_tag

 array(1) { [0]=> string(97) "<img alt='' src='http://img.ruphp.com/warnings/banner.jpg' align='' border='0px'>" 

Предполагая, что $img_tag является объектом некоторого типа, а не правильной строкой, $img_tag в строку внутри []

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

Например, некоторые типы объектов, в частности SimpleXMLElement , возвращают строковое представление для print/echo помощью магического метода __toString() , но не могут стоять как обычные строки. Попытки использовать их в качестве ключей массива приведут к ошибке illegal offset type если вы не примените их к строкам с помощью (string)$obj .

См. Первый комментарий к этому отчету об ошибке PHP :

Вы не можете использовать массивы или объекты в качестве ключей. Это приведет к предупреждению: тип недопустимого смещения. Проверьте свой код.

Убедитесь, что $img_tag имеет соответствующий тип переменной.

$result – 2-мерный массив. Так что $img_tag должен быть массивом.

Но только целые числа и строки могут использоваться как смещение

 foreach( $result[0] as $img_tag) 

оно работает