• Как установить сертификат на телефон honor?

    @AlexVWill
    Клиент StrongSwan не требует установки сертификата в хранилище, достаточно просто файл положить в каталог в память смартфона.
    Как подключать читать тут: https://www.digitalocean.com/community/tutorials/h...
    Ответ написан
    1 комментарий
  • Как вывести массив foreach в обратном порядке?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Еще один вариант реверсивного перебора. Будет работать также с ассоциативными массивами. Предварительный реверс массива не требуется, поэтому будет эффективнее
    $array = ["zero", "one", "two", "three", "four"];
    
    for (end($array); ($key = key($array)) !== null; prev($array) ) {
        print($key . " : " . current($array) . "\n");
    }

    sandbox.onlinephpfunctions.com/code/9f09320d307718...
    Ответ написан
    Комментировать
  • Как правильно составить mysql запрос?

    SagePtr
    @SagePtr
    Еда - это святое
    SELECT city FROM bases WHERE site_id=1 GROUP BY city HAVING MAX(status) = 0
    Ответ написан
    Комментировать
  • Режим работы из массива в одну строку?

    miraage
    @miraage
    Старый прогер
    <?php
    
    $inputs = [
      [
        ['Пн', '08:00 - 20:00'],
        ['Вт', '08:00 - 20:00'],
        ['Ср', '08:00 - 20:00'],
        ['Чт', '08:00 - 20:00'],
        ['Пт', '08:00 - 20:00'],
        ['Сб', '08:00 - 18:00'],
        ['Вс', '10:00 - 15:00'],
      ],
    
      [
        ['Пн', '08:00 - 19:00'],
        ['Вт', '08:00 - 19:00'],
        ['Ср', '08:00 - 21:00'],
        ['Чт', '08:00 - 20:00'],
        ['Пт', '08:00 - 20:00'],
        ['Сб', '08:00 - 18:00'],
        ['Вс', '10:00 - 15:00'],
      ],
    ];
    
    function is_consecutive(array $numbers)
    {
      $count = count($numbers);
    
      if ($count < 2) {
        return false;
      }
    
      $first = $numbers[0];
      $range = range($first, $first + $count - 1);
    
      return $numbers === $range;
    }
    
    function format_day_times(array $input)
    {
      $timeIndexes = [];
    
      foreach ($input as $index => list($day, $time)) {
        $timeIndexes[$time][] = [$index, $day];
      }
    
      $result = [];
    
      foreach ($timeIndexes as $time => $data) {
        if (is_consecutive(array_column($data, 0))) {
          $result[] = sprintf(
            '%s-%s: %s',
            $data[0][1],
            array_slice($data, -1)[0][1],
            $time
          );
        } else {
          foreach ($data as list(, $day)) {
            $result[] = sprintf('%s: %s', $day, $time);
          }
        }
      }
    
      return join(', ', $result);
    }
    
    foreach ($inputs as $input) {
      echo format_day_times($input), PHP_EOL;
    }


    Пн-Пт: 08:00 - 20:00, Сб: 08:00 - 18:00, Вс: 10:00 - 15:00
    Пн-Вт: 08:00 - 19:00, Ср: 08:00 - 21:00, Чт-Пт: 08:00 - 20:00, Сб: 08:00 - 18:00, Вс: 10:00 - 15:00
    Ответ написан
    Комментировать
  • Режим работы из массива в одну строку?

    AnnTHony
    @AnnTHony
    Интроверт
    $arr = [
     ['Пн', '08:00 - 20:00'],
     ['Вт', '08:00 - 20:00'],
     ['Ср', '08:00 - 20:00'],
     ['Чт', '08:00 - 20:00'],
     ['Пт', '08:00 - 20:00'],
     ['Сб', '08:00 - 18:00'],
     ['Вс', '10:00 - 15:00'],
    ];
    
    $res = "";
    $i = 0;
    
    do {
    	$j = $i + 1;
    	do {
    		if ($arr[$i][1] <> $arr[$j][1]) {
    			break;
    		}
    		$j++;
    	} while ($j < count($arr));
    	
    	if (strlen($res) > 0) {
    		$res .= ", ";
    	}
    	
    	if ($i == $j - 1) {
    		$res .= $arr[$i][0] . ": " . $arr[$i][1];
    	}
    	else {
    		$res .= $arr[$i][0] . '-' . $arr[$j - 1][0] . ': ' . $arr[$i][1];
    	}
    	
    	$i = $j;
    } while ($i < count($arr));
    
    echo $res;
    Ответ написан
    Комментировать
  • Режим работы из массива в одну строку?

    @Mercury13
    Программист на «си с крестами» и не только
    Скажем прямо: данная конструкция работает только если выходные дни в начале или конце недели. Если в середине — придётся расширять алгоритмы, да и труднолокализуема (языковые строки одновременно служат техническими ключами).

    Заводим три переменных: firstDay, lastDay, workHours. Поначалу они пустые строки.
    Проходимся по всем элементам.
    • Если рабочие часы совпадают с workHours — перезаписываем lastDay, и всё.
    • А если нет — проводим функцию dump, перезаписываем все три.
    После цикла принудительно проводим dump.

    Как должна работать функция dump.
    • Если workHours пусто — ничего не делаем.
    • Если результирующая строка непуста — добавляем разделитель.
    • В зависимости от того, совпадают ли firstDay и lastDay, добавляем «Пн» или «Пн-Пт».
    • Ну и, наконец, добавляем рабочие часы.
    Ответ написан
    Комментировать
  • Как сохранять результаты игры?

    KorsaR-ZN
    @KorsaR-ZN
    Подписывайте результат, цифровой подписью от всех параметров + секретный ключ.
    Но все равно безопасно не будет, т.к это JS он открыт, и все могу посмотреть, как у Вас идет общение с сервером.

    Но такая подпись все же обезопасит перемещение данных от клиента к серверу.

    Можете шифровать результат, динамическим ключом, который будете получать от сервера на момент запроса, ключ выдавать, только если запрос пришел ajax и с вашего сайта, но это тоже не безопасно будет, т.к все равно можно отследить, как идет шифрование и умелые ручки все равно обойдут, но от "дурачка" защитит.
    Ответ написан
    Комментировать