Перенос функций из JS в PHP

193
24 июля 2018, 07:00

Есть функции, написанные на JS:

function DateTimeToUnix(d)
{
  var r = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), 00, 00, 00));
  var n = (r.getTime()/1000); 
  return n;
}
function rezerveNCd(code)
{
  var str = rezerveCd(code);
  var c = 0;
  var char = "";
  var i = 1;
  var result = "";
  var s = "";
  for (i=0;i<str.length-1;i++)
  {
    char = str.charAt(i);
    c = char * (i+1);   
    char = c;  
    s = char.toString();
    s = s.charAt(s.length-1);

    result = result + s;
  }
  return result;
}    
function rezerveCd(code)
{
  var d = new Date()
  var unixtime = DateTimeToUnix(d);
  var i = 0;
  var str = unixtime.toString();
  var n = 1;
  code = code + 127;
  var result = str;
  for (i=0;i<=str.length-1;i++)
  {
    n = str.charAt(i)*code;
    result = result+n;
  }
  return result;
}

Пытаюсь написать тоже самое на PHP:

function mkTimestamp($year,$month,$day, $hours=00,$minutes=00,$seconds=00){
    date_default_timezone_set('UTC');
  return mktime($hours,$minutes,$seconds, $month,$day,$year);
}
function char_at($str, $pos)
{
  return $str{$pos};
}
function rezerveCd($code) 
{
    $d = mkTimestamp(date("Y"), date("m"), date("d"));
    $i = 0;
    $stre = (string)$d;
    $n = 1;
    $code = $code + 127;
    $result = $stre;
    for ($i = 0; $i <= count($stre) - 1;$i++) 
    {
        $n = char_at($stre, $i) * $code;
        $result = $result + $n;
    }
    return $result;
}

function rezerveNCd($code) 
{
    $stre = rezerveCd($code);
    $c = 0;
    $i = 1;
    for ($i = 0; $i < count($stre) - 1; $i++) 
    {
        $char = char_at($stre, $i);
        $c = $char * ($i + 1);
        $char = $c; 
        $s = (string)$char;
        $s = char_at($s, (count($s) - 1));
        $result = $result + $s;
    }
    return $result;
}

При вызове на JS console.log(rezerveCd(60)) и console.log(rezerveNCd(60)) значения выдаёт корректно При попытке echo rezerveCd(60); выдаёт неполное значение, а echo rezerveNCd(60); ничего не выдаёт. В чём может быть проблема? Буду благодарен за помощь! P.S. значение console.log(rezerveCd(60)) - 15294528001899453781701756945378151200 значение echo rezerveCd(60); - 1529452987

Answer 1

Вы путаете конкатенацию в js со сложением в php.

Почти дословный перевод:

function rezerveCd($code)
{
  $str = strval(time());
  $code += 127;
  $result = $str;
  for ($i=0; $i < strlen($str); $i++)
  {
    $n = $str{$i}*$code;
    $result .= $n;
  }
  return $result;
}
echo rezerveCd(60); // 152948781718793537416837481496130914961871309
READ ALSO
Как передать в функцию параметры из объекта?

Как передать в функцию параметры из объекта?

Всем привет, я только начинаю изучать ООП и столкнулся вот с такой проблемой

204
Поиск QMainWindow в приложении

Поиск QMainWindow в приложении

Внедряюсь/Инжектируюсь в стороннее Qt-приложениеПеребираю все QWidget, но не нахожу среди них QMainWindow

135
Копирование указателей из одного std::map в другой

Копирование указателей из одного std::map в другой

Мне нужно скопировать данные из одного std::map в другой std::map, при условии что эти данные выражены в виде указателейТо есть с помощью оператора...

155
includePath в Visual Studio Code не видны хедеры

includePath в Visual Studio Code не видны хедеры

IntelliSense в VS Code не видит хедеры, установленные в /usr/local/includeЯ собрал и установил GLUT для OpenGL, но по умолчанию хедеры и либы установились не в /usr, а в /usr/local

211