Почему все объекты не выводятся из for в if?

254
11 декабря 2017, 16:43
$filename = ENGINE_DIR . '/inc/mhblock/serials.txt';
    $json = file_put_contents($filename, file_get_contents('http://moonwalk.cc/api/serials_foreign.json?api_token=d10a8f4368bc3a6e26b11477ad939da1'));
    $file_json = file_get_contents(ENGINE_DIR . '/inc/mhblock/serials.txt');
    $data = json_decode($file_json,true);
    $datac = $data['report']['total_count'];
    $sql = $db->query("SELECT id, title, kp_id_movie, xfields FROM " . PREFIX . "_post");
        for ($i=0; $i <= $datac; ++$i) { 
            while ($rowes = $db->get_row($sql)){
                if($data['report']['serials'][$i]['kinopoisk_id'] == (int)$rowes['kp_id_movie']){
                    echo '<tr class="danger">
                    <th>' . ++$i . '</th>
                    <th>' . $rowes['title'] . '</th>
                    <th>' . $rowes['kp_id_movie'] . '</th>
                    <th>' . $data['report']['serials'][$i]['translator'] . '</th>
                    <th><a href=\"{$config['admin_path']}?mod=editnews&action=editnews&id={$rowes['id']}\" target=\"_blank\" data-original-title=\"Перейти к редактированию\" class=\"status-info tip\" ><i class=\"icon-edit\"></a></th>";
                    }
                }
            }
        }

В if выводит только один объект из [0] с совпадением из БД [кинопоиск_ид] А мне нужно, чтобы они выводили некоторые обьекты с совпадением, как это реализовать?

Допустим из API лежит [0] и его содержимое кинопоиска: 471742

Array
(
    [0] => Array
        (
            [title_ru] => 1001 ночь / Тысяча и одна ночь
            [title_en] => 1001 gece / BinBir Gece
            [year] => 2006
            [token] => a196f79599bde0294241a7062c43dec5
            [type] => serial
            [kinopoisk_id] => 471742
            [world_art_id] => 
            [translator] => одноголосый закадровый
            [translator_id] => 65
            [iframe_url] => http://moonwalk.cc/serial/a196f79599bde0294241a7062c43dec5/iframe
            [seasons_count] => 1
            [episodes_count] => 90
            [category] => 
            [block] => Array
                (
                    [blocked_at] => 
                    [block_ru] => 
                    [block_ua] => 
                )
        )

После этого из БД нашло совпадение равну API объекту. На сайте выводит только один :-(

int(471742) == int(471742)

Спасибо за внимание!

Answer 1
// достаём все id
$kinopoiskIds = array_map(function($e) {
  return $e['kinopoisk_id'];
}, $data['report']['serials'])
// выполняем запрос с in
$result = $db->query("SELECT id, title, kp_id_movie, xfields FROM " . PREFIX . "_post where kp_id_movie in (" . implode(',', $kinopoiskIds) . ")");
// ваш цикл
while($result) { ... }
READ ALSO
Записать математическую формулу на PHP

Записать математическую формулу на PHP

Доброго времени суток! Нужна ваша помощьНеобходимо записать математическую формулу на PHP

195
1.0545E-6 перевод такого типа чисел в полные

1.0545E-6 перевод такого типа чисел в полные

Как перевести при помощи php 10545E-6 такого рода числа в полный формат с 10 числами после запятой?

157
Как вывести конкретный елемент масива в начало?

Как вывести конкретный елемент масива в начало?

Есть масив, нужно перенести значение "производитель" на первое место, тоесть должно стоять перед "Используемый кофе: молотый / зерновой", количество...

181