Я продолжаю получать сообщение об ошибке «Предупреждение: переменная, переданная каждому () не является массивом или объектом» в сценарии, который, как я знаю, является массивом. Основной код:
Массив построен из вызова API —
$results = $abc->request('thing', $params, 'GET');
Я подтвердил через print_r
тот $results
это на самом деле массив — вот пример
Array
(
[currentPage] => 1
[numberOfPages] => 196
[totalResults] => 9754
[data] => Array
(
[0] => Array
(
[id] => 1234
[name] => Robert
[nameShortDisplay] => Bob
[description] => Lorem....
)
)
[status] => success
)
Мой код, который является проблемой, должен циклически проходить по массиву, а во время цикла очищать данные и вставлять их в мою БД.
foreach ($results as $each_results) {
while (list($key, $value) = each ($each_results)) {
$id = mysqli_real_escape_string($connection, $results[data][$key][id]); ...
Почему говорят, что переменная, переданная каждому (), не является массивом?
foreach ($results as $each_results) {
собирается повторить все значения в $results
массив (1, 196, 9754 и т. д.).
Некоторые значения не являются массивами, поэтому вы получаете эту ошибку. Но, исходя из того, что вы делаете в цикле while, похоже, что вы сможете просто итерировать data
ключ напрямую.
foreach ($results['data'] as $entry) {
$id = mysqli_real_escape_string($connection, $entry['id']);
// ...
}
foreach
оператор принимает массив в $results
и перебирает его, присваивая каждому элементу массива $each_results
,