За последние 24 часа нас посетили 61266 программистов и 13889 роботов. Сейчас ищут 1863 программиста ...

Перестал работать итератор!

Тема в разделе "PHP для новичков", создана пользователем Артем90, 23 ноя 2017.

  1. Артем90

    Артем90 Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    19
    Симпатии:
    0
    Есть примерно такой код:

    Код (Text):
    1. <?php
    2. $m = '[{
    3.   "r": "19",
    4.   "t": "bus",
    5.   "v": [{
    6.       "bn": "34-31",
    7.       "gps_id": 3047,
    8.       "Lat": 50.942291666667,
    9.       "Lng": 34.7614,
    10.       "t": 1509956908,
    11.       "d": 133,
    12.       "s": -1
    13.   }, {
    14.       "bn": "33-87",
    15.       "gps_id": 3109,
    16.       "Lat": 50.903346,
    17.       "Lng": 34.772668,
    18.       "t": 1509957164,
    19.       "d": 208,
    20.       "s": -1
    21.   }, {
    22.       "bn": "33-91",
    23.       "gps_id": 3113,
    24.       "Lat": 50.898905,
    25.       "Lng": 34.76712,
    26.       "t": 1509957176,
    27.       "d": 55,
    28.       "s": -1
    29.   }, {
    30.       "bn": "33-25",
    31.       "gps_id": 3020,
    32.       "Lat": 50.888363,
    33.       "Lng": 34.749946,
    34.       "t": 1509957182,
    35.       "d": 167,
    36.       "s": -1
    37.   }, {
    38.       "bn": "36-25",
    39.       "gps_id": 3112,
    40.       "Lat": 50.932891,
    41.       "Lng": 34.7892,
    42.       "t": 1509957164,
    43.       "d": 137,
    44.       "s": -1
    45.   }, {
    46.       "bn": "14-35",
    47.       "gps_id": 3799,
    48.       "Lat": 10000,
    49.       "Lng": 10000,
    50.       "t": 1509957168,
    51.       "d": 247,
    52.       "s": -1
    53.   }]
    54. }, {
    55.   "r": "3",
    56.   "t": "bus",
    57.   "v": [{
    58.       "bn": "36-02",
    59.       "gps_id": 3091,
    60.       "Lat": 50.873686,
    61.       "Lng": 34.772368,
    62.       "t": 1509957169,
    63.       "d": 314,
    64.       "s": -1
    65.   }]
    66. }]';
    67. $rCnt = 0;
    68. $iter = new RecursiveIteratorIterator(new RecursiveArrayIterator(json_decode($m,true)));
    69. foreach($iter as $key=>$val){
    70.     if($key == 'r')
    71.         $rCnt++;
    72. }
    73. echo $rCnt;
    74. ?>
    Сначала всё работало нормально, переменная считала количество символов. Но теперь вместо это в браузере выбивает вот что:

    Код (Text):
    1. $val){ if($key == 'r') $rCnt++; } echo $rCnt; ?>
    Что не так? Ведь всё работало нормально!
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @Артем90 Надо открыть учебничек по php и почитать с самого начала, а не копипастом заниматься!
     
  3. Артем90

    Артем90 Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    19
    Симпатии:
    0
    А просто ответить нельзя? Тем более, я сказал, что всё работало. Нужно сделать всё срочно, поэтому спрашиваю здесь.
     
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    нет нельзя! надо срочно: Вперёд в раздел фриланс, там всё сделают за тебя или в раздел сделайте за меня.
    Но перед тем как туда идти раскрой классы которые там итераторами называются и код выделяй в
    PHP:
    1. // а не в текст.
    --- Добавлено ---
    и почему ты в пыхе орудуешь json ами ?
    --- Добавлено ---
    @Артем90 у меян вот например код не вываливается наружу. Не разу такого не было. А у тебя может проблема с сервером ты где кодишь?
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    С терминологией все конечно плохо.
    Ты напрямую из браузера открываешь скрипт? или же через веб сервер?
    Если второй вариант, проверь работает ли у тебя PHP
    --- Добавлено ---
    Итератор - это по вашему интерпретатор?
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Потому что почему бы и нет.
     
  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    мне кажется ты злишься на меня)
    --- Добавлено ---
    @mahmuzar нет посотри как функции называются. Я думаю он прямо имеет ввиду свой итератор. Я думаю он не понимает как вообще работает это чудо. Копипаста наверное
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Нет, все проще - я не вижу проблемы в использовании JSON при работе с PHP. Пых его поддерживает, это очень удобный формат данных, его используют многие CMS для хранения конфигов тех же, что уж там, его использует великий и ужасный Composer. Я тоже часто им пользуюсь, например.

    Плюс, входящие данные в виде JSON от клиента - обычное дело.
    JSON уже давно как отпочковался от JS и стал чуть ли не стандартным транспортом, так что все ок.
     
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    Нет ну ты всё таки злишься :D
    Я когда это написал не внимательно ознакомился с его кодом. После обнаружил что его json передаётся в некую функцию где транслируется в обычный массив, а значит это скорее всего получаемый им json массив откуда-то.
    Я тоже юзаю json и храню данные в нём в mysql в виде текста
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Если в браузере выбивается код, значит слетели настройки веб-сервера, и он больше не выполняет php по какой-то причине.

    @askanim, классы, которые ты просишь ТС-а раскрыть - часть стандартной библиотеки PHP :)
     
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Эхехе..
    У тебя систематическая нехватка базы. Оттуда и непонимание происходящего, оттуда и мания придумывать свои термины поверх существующих.

    Я перечислил самые распространенные кейсы.
     
  13. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    выдёргиваешь мои фразы из контекста думаешь я не знаю как работать с json ?)
    На вот посмотри
    PHP:
    1. public function updateFiles ($table_name, $id, $id_book) {
    2.         // Тут ползают чертята, оккуратней ! : )))
    3.         if (empty($_FILES['image']) and empty($_FILES['images'])) return true;
    4.         $upload = new Upload();
    5.         $update_array = array ();
    6.         if (!empty($_FILES['image'])) {
    7.             $image = $upload->normalize_array($_FILES['image']);
    8.             // Проверим обновление ли это строки, если да проведём операции по зачистки картинок
    9.             if ($this->heandlerUpdate === true) {
    10.                 // Если это обновление строки тогда удалим текущую картинку и подгрузим новую если таковая имеется
    11.                 // Нужно получить все текущии поля с хранящимися картинками если их нет то не чего делать не будем
    12.                 $images = FieldBook::getFieldByType('image', $id_book);
    13.                 if (!empty($images)) {
    14.                     $imageKeyName = [];
    15.                     foreach ($image As $key => $value) {
    16.                         if ($image[$key]['error'] != 4){
    17.                             $imageKeyName[] = $key;
    18.                         }
    19.                     }
    20.                     // Установим настройки для работы с библиотекой по удалению картинок
    21.                     $set = [];
    22.                     $set['table_name'] = $table_name;
    23.                     $set['editor_col'] = [];
    24.                     foreach ($images as $key) {
    25.                         $set['editor_col'][] = [
    26.                             'type' => 'image',
    27.                             'name_col' => $key['name_field']
    28.                         ];
    29.                     }
    30.                     $moduleWork = new ModuleWork($set);
    31.                     $moduleWork->getImage($id, $imageKeyName)->deleteImage();
    32.                 }
    33.             }
    34.  
    35.             $image = $upload->get_attr('image_')->path_to_file(ROOT.'/template/files')
    36.                 ->prepare($image)->save();
    37.             if ($image !== false) {
    38.                 foreach ($image As $key => $value) {
    39.                     $update_array[$key] = $image[$key]['name'];
    40.                 }
    41.             }
    42.         }
    43.         if (!empty($_FILES['images'])) {
    44. // множественная загрузка файлов описан единичный случай. Нужено переделать в множественный !!!
    45.             $json_array = [];
    46.             $images = $upload->normalize_files_array($_FILES['images']);
    47.             $images = $upload->get_attr('image_')->path_to_file(ROOT.'/template/files')
    48.                 ->prepare($images)->save();
    49.             if ($images !== false) {
    50.              
    51.                 foreach ($images As $key => $value) {
    52.                     $json_array[] = $images[$key]['name'];
    53.                 }
    54.                 $images = FieldBook::getFieldByType('images', $id_book);
    55.                 if (empty($images[0]['name_field'])) {
    56.                     return false;
    57.                 }
    58.                 if ($this->heandlerUpdate === true) {
    59.                     // Если это обновление нужно получить все картинки хранящиеся в бд
    60.                     $data = $this->book->getRowByID($id);
    61.                    
    62.                     $dataImages = $data[$images[0]['name_field']];
    63.                     $dataImages = json_decode($dataImages, true);
    64.                    
    65.                     foreach ($dataImages As $key => $value) {
    66.                         $json_array[] = $value;
    67.                     }
    68.                 }
    69.                 $update_array[$images[0]['name_field']] = json_encode($json_array);
    70.             }
    71.         }
    72.  
    73. // Обновление добавленной строки
    74.  
    75.         \Application\Model\Module\Modules::updateRowModuleTable($table_name, $update_array, $id);
    76.  
    77.         return $update_array;
    78.     }
    --- Добавлено ---
    Это как я в движке работаю у себя с картинками при их загрзуке
    --- Добавлено ---
    там есть и декод и енкод. )
    --- Добавлено ---
    не спорю я где то чего то не знаю. Прост оя не читал что там у него в чёрно белом коде написано. ТАк посотрел json и спросил его почему он орудует json хотел узнать цель. Вообще что он делает и зачем.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Ни разу не выдернуто. Не моя вина, что ты думаешь одно, а пишешь другое. Я вижу только то, что ты пишешь. И только тот контекст, который ты задаешь. А не тот, который подразумеваешь.
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @Fell-x27
    Я имел ввиду там где он создаёт экземпляр класса. И передачу в конструктор декодированный массива. Да действительно этот класс на пыхе мне не известен.
    --- Добавлено ---
    но это не базис, это то что пока ещё не было нужно в моей практике.