Зацикливание многомерных массивов в PHP 7.2 - PullRequest
0 голосов
/ 08 декабря 2018

Я только что обновился до PHP 7.2 и получаю Неустранимая ошибка PHP: Uncaught Ошибка: в этой строке невозможно использовать смещение строки как массив для строки $myarray[$ex][0] = $oldarray[$z]['ID'];старый код ...

                $ex=0;
                $z=0;
                while($oldarray[$z]['ID']){
                    if(0==$duplicatename or !$duplicatename){
                        $ex++;
                        $myarray[$ex][0] = $oldarray[$z]['ID'];
                        /*...*/
                    }
                    $z++;
                }

Я читал, что более поздние версии PHP имеют обратно несовместимые изменения , поэтому я изменил строку с ошибкой на $myarray[$ex]['ID'] = $oldarray[$z]['ID'];, но я получаюта же ошибка.

Сайт, с которого этот код устарел, поэтому я действительно ожидал больше проблем, чем просто этот кусок кода.Может кто-нибудь сказать мне, что я делаю не так здесь, пожалуйста.

Вот var_dump из $oldarray, я немного отредактировал его, чтобы изменить содержимое ...

array (4) {[0] => array (11) {["ID"] => int (59480) ["boxid"] => int (11158) ["galleryurl"] => string (75) "http: // ... "[" gallerytitle "] => string (63)" Здесь идет название галереи "[" gallerytype "] => string (5)" photo "[" gallerydate "] => int (1542544634) ["galleryactive"] => string (1) "y" ["usersubmitted"] => string (1) "n" ["userip"] => NULL ["galleryhot"] => string (1) "n" ["gallidentify"] => int (372239531175)} 1 => array (11) {["ID"] => int (59324) ["boxid"] => int (11158) ["galleryurl"] => string (79)" http: // ... "[" gallerytitle "] => string (45)" Здесь идет заголовок галереи "[" gallerytype "] => string (5)" photo "["gallerydate "] => int (1538477012) [" galleryactive "] => string (1)" y "[" usersubmitted "] => string (1)" n "[" userip "] => NULL [" galleryhot "]=> string (1) "n" ["gallidentify"] => int (428341079414)}}

1 Ответ

0 голосов
/ 08 декабря 2018

Есть ли возможность рефакторинга с использованием foreach?

http://php.net/manual/en/control-structures.foreach.php

Что вы получите, если будете использовать:

print_r($oldarray);
print_r($myarray);

?

Есть некоторая вероятность того, что у вас есть объект во втором измерении массива ... нам нужно увидеть больший кусок кода, который поможет вам эффективно ...

Что произойдет, если вы измените:

$myarray[$ex][0] = $oldarray[$z]['ID'];

таким способом:

$myarray[$ex][0] = $oldarray[$z].ID;

?

...