Может кто-нибудь объяснить мне, что делает эта функция preg_match ()? - PullRequest
0 голосов
/ 21 марта 2011

Итак, я читаю эту книгу по объектно-ориентированному программированию на PHP, и в примере метода, где автор проверяет тип данных, я натолкнулся на эту функцию:

//class AddressManager...
function outputAddresses( $resolve ) {
  if ( is_string( $resolve ) ) {
    $resolve =
      ( preg_match("/false|no|off/i", $resolve ) )?
      false:true;
  }
  // ...
}

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

Ответы [ 3 ]

2 голосов
/ 21 марта 2011

preg_match само по себе не преобразует строку в логическое значение, это функция сопоставления регулярного выражения.То, что у вас есть, есть троичное выражение, которое в значительной степени оценивается следующим образом:

class AddressManager
... 
    function outputAddresses( $resolve ) 
    { 
    if ( is_string( $resolve ) ) 
    { 
      if (preg_match("/false|no|off/i", $resolve))
      {
         $resolve = false;
      } else {
         $resolve = true;
      }
      // $resolve = ( preg_match("/false|no|off/i", $resolve ) )? false:true; 
    } 
// ... 
}
0 голосов
/ 21 марта 2011

Псевдокод для вышеуказанного.

if( $resolve equals false  or no or off)
then 
    set  $resolve as false
else
    set  $resolve as true

The?(троичный оператор) просто заменяет приведенные выше строки кода.Это то, что происходит за кулисами.

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

0 голосов
/ 21 марта 2011

Если переменная $ resolle содержит «false» или «no» или «off» нечувствительным образом (без учета регистра), тогда вернуть FALSE.В противном случае верните TRUE.

Похоже на простую проверку ввода данных пользователем (и не очень хорошую).Что произойдет, например, если вы введете «ничего» или «сейчас»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...