Помогите по пониманию JS - PullRequest
1 голос
/ 09 апреля 2010

У меня есть кусок кода:

Math&&Math.random?Math.floor(Math.random()*10000000000000):Date.getTime();

И, насколько я знаю, && является логическим оператором для AND, поэтому я пытаюсь преобразовать это в PHP, и вот где я получил:

intval(floor(time()/10800000)%10+(rand()?floor(rand()*10000000000000):time()))

Проблема в том, что я не могу понять первую часть

Math&&

Может кто-нибудь помочь с этим, потому что я всегда получаю отрицательный результат, когда я должен получить положительный результат (вероятно, логический ранд)-time не работает в моем примере PHP)

Ответы [ 4 ]

3 голосов
/ 09 апреля 2010

Это тест, чтобы убедиться, что класс Math доступен в браузере. Вам не нужно это в PHP. Второе предложение проверяет, доступен ли метод Math.random. Он использует его, если он есть, и использует время, если это не так.

В PHP просто используйте rand (). http://us2.php.net/rand

1 голос
/ 09 апреля 2010

Это может быть просто троичный оператор, который сбивает вас с толку.

http://en.wikipedia.org/wiki/Ternary_operation

0 голосов
/ 09 апреля 2010

Там ваш код Javascript:

  • Проверка существования объекта Math
    • и имеет метод random
  • Если да, использовать его для генерации случайного значения
  • иначе, используя дату как запасной вариант, чтобы получить случайное значение


В своем PHP-коде вы знаете, что существуют rand() и mt_rand(); не нужно проверять, если они делают ; -)

Это означает, что тесты и условия бесполезны и вам не нужно перекодировать их в PHP: просто оставьте часть между ? и : в исходном коде.

0 голосов
/ 09 апреля 2010

Это проверка, чтобы определить, является ли переменная Math не null / undefined. Я никогда не видел этого раньше, но я предполагаю, что это предотвратит ошибку, если по какой-то причине Math равно null (хотя я не могу представить, почему это произошло).

...