• Как положить данные в многомерный массив и отсортировать?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    <?php
    $input_data = Array (
        0 => Array ( 0 => 24.13000000, 1 => 883.80000000 ),
        1 => Array ( 0 => 24.12000000, 1 => 1605.01000000 ),
        2 => Array ( 0 => 24.11000000, 1 => 3260.20000000 ),
    );
    
    
    //трансформируем исходные данные к нужному виду
    $result = array_reduce($input_data, function($r, $item) {
        $r[] = ['tick' => $item[0], 'price' => $item[1]];
        return $r;
    });
    
    //сортируем по убыванию price
    array_multisort(array_column($result, 'price'), SORT_DESC, $result);
    
    print_r($result);
    Ответ написан
    Комментировать
  • Как сделать такой график?

    @MagicMight
    no magic quotes
    Ответ написан
    Комментировать
  • Как передать данные из переменных PHP в графики Apex Charts (JS)?

    @romicohen
    Системный Архитектор
    Нужно:

    1 Из JS скрипта сделать GET запрос к PHP скрипту.

    2. В PHP скрипте сгенерить данные по образу и подобию: https://apexcharts.com/docs/creating-first-javascr... и отдать в виде ответа (Response)

    3 В JS скрипте получить этот ответ и сформировать график

    4 PROFIT!!))
    Ответ написан
    Комментировать
  • Как передать данные из переменных PHP в графики Apex Charts (JS)?

    maddog670
    @maddog670
    <?php
        $arr = [1,2,3,5,6];
        $json = json_encode ( $arr,  JSON_FORCE_OBJECT );
    ?>


    <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    var json = jQuery.parseJSON ("<?php echo $json; ?>" );
    </script>
    Ответ написан
    4 комментария
  • Почему cURL возвращает пустоту?

    IceRD
    @IceRD
    $url = "https://www.bitmex.com/api/v1/instrument/active";
    
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    
    //for debug only!
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    
    $resp = curl_exec($curl);
    curl_close($curl);
    var_dump($resp);
    Ответ написан
    Комментировать
  • Как запустить цикл в 10 потоков?

    Доброго)
    Посмотрите этот код, вдруг он Вам поможет.
    import threading
    #pip install requests
    import requests
    
    
    def get_status(url, results):
        results[url] = requests.get(url).status_code
    
    
    sites = ['https://www.google.com/', 'https://www.youtube.com/',
             'https://pastebin.com/', 'https://ru.wikipedia.org/',
             'https://yandex.ru/', 'https://www.pornhub.com/',
             'https://vk.com/', 'https://www.reddit.com/',
             'https://qna.habr.com/', 'https://stackoverflow.com/']*5
    
    
    results = {}
    workers = [threading.Thread(target=get_status(sites[f], results)) for f in range(10)]
    
    for worker in workers:
        worker.start()
    
    for worker in workers:
        worker.join()
    
    for k, v in results.items():
        print(k, v)
    Ответ написан
    Комментировать
  • Как правильно сравнить два словаря?

    karabanov
    @karabanov
    Системный администратор
    old_dict = {'Anton':454.44, 'Sergey':345.65,'Petr':7634.88}
    new_dict = {'Anton':1123.20, 'Sergey':85.34,'Petr':677.09}
    
    items = {k: new_dict[k] for k in new_dict if k in old_dict and new_dict[k] > old_dict[k]}
    print(items)
    Ответ написан
    Комментировать
  • Как обработать ошибку SQLlite?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Такая конструкция называется UPSERT:
    INSERT INTO VALUES ON CONFLICT DO UPDATE SET ;

    INSERT INTO table_1 (name, quantity) 
    VALUES ('Name1', 1), ('Name2', 1) 
    ON CONFLICT (name) DO UPDATE SET quantity = quantity + 1
    ;


    SQLite test
    Ответ написан
    Комментировать
  • Как запускать метод каждую минуту?

    Vindicar
    @Vindicar
    RTFM!
    Ответ зависит от целого ряда факторов.
    1. Должна ли программа делать что-то ещё? Если да, то что именно?
    2. Сколько таких периодических методов будет существовать? Строго один, или может быть более? Должны ли у них быть разные периоды?

    Если программа синхронная, и метод только один, то можно использовать простой приём:
    import time
    
    stop = False
    def proc_to_call():
      global stop
      #Это твой периодический вызов
      #когда нужен останов, делаешь stop = True
      pass
    
    while not stop:
      time.sleep(60)
      proc_to_call()
    #код после цикла выполнится только после прерывания цикла.


    Если вызовов несколько и с разной периодичностью, то лучше использовать пакет schedule. Но у тебя всё равно будет бесконечный цикл вида
    while True:
        schedule.run_pending()
        time.sleep(1)

    И пока программа крутится в этом цикле, она не будет делать ничего другого.

    Если тебе нужно делать что-то параллельно с периодическим вызовом, то дело усложняется.
    Если твоя программа синхронная, то тебе потребуется отдельный поток выполнения.
    import threading
    
    class MyJob(threading.Thread):
      def __init__(self):
        super().__init__(self)
        self.stop = threading.Event()
    
      def proc_to_call(self):
        #Это твой периодический вызов
        pass
      
      def run(self):
        while not self.stop.wait(60):
          self.proc_to_call()
    
    job = MyJob()
    job.start()
    #код основного потока продолжает выполняться после этого
    #когда нужен останов, делаешь 
    job.stop.set() #сигналим об останове
    job.join() #ждём завершения потока

    Почему использую Event вместо простой логической переменной и time.sleep()? Потому что в случае с time.sleep() тебе придётся ждать конца минуты, прежде чем поток снова проверит логический флаг и поймёт, что пора останавливаться. А при использовании Event его установка тут же прервёт ожидание - и выйдет из цикла.

    А если твоя программа асинхронная, то всё упрощается, так как корутины уже могут чередовать своё выполнение, выполняясь "как бы параллельно". Можно использовать как schedule, так и простой цикл, просто не забывай использовать await asyncio.sleep() вместо time.sleep().
    Ответ написан
    3 комментария
  • Как обработать ошибку SQLlite?

    @rPman
    при обновлении тебе должны вернуть количество измененных записей cursor.rowcount, так что смотри и да, 0 - это не ошибка.
    Ответ написан
    Комментировать