Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возвращает результат если параметр = bool 
V
    Опции темы
Antony41
Дата 13.11.2012, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Ребят подскажите пожалуйста стандартную функцию (я уверен что она есть)
чтоб она возвращает результат если параметр = bool

нужна стандартная замена этой функции
Код

    public static function is_result($value)
    {
        if($value)
            return $value;
    }  


Код

$query = "SELECT * FROM my_table1 '.is_result($sub_query).' '.is_result($sorted)


Это сообщение отредактировал(а) Antony41 - 14.11.2012, 00:33
PM MAIL   Вверх
mirotvorets
Дата 13.11.2012, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 13.11.2012

Репутация: нет
Всего: нет



Так а какой результат то она должна возвращать? Проверку результата для каждого конкретного случая не загонишь в стандартную функцию!
PM MAIL WWW   Вверх
Antony41
Дата 13.11.2012, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Цитата(mirotvorets @ 13.11.2012,  23:11)
Так а какой результат то она должна возвращать? Проверку результата для каждого конкретного случая не загонишь в стандартную функцию!

PHP производит автоматическое преобразование в зависимости от конкретной операции, т.е. если опреация производится как со строкой (например strlen($var)), то переменная var будет рассматриваться как пустая строка, а если это логические операции, то переменная будет рассматриваться как типа bool, 
это в C/С++ или например в Delphi  имеет значение тип.

Или я не прав ? Просто php всего третий день изучаю...

Добавлено через 3 минуты и 11 секунд
в примере же видно что если переменная 'true' то возвращает параметр
PM MAIL   Вверх
mirotvorets
Дата 13.11.2012, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 13.11.2012

Репутация: нет
Всего: нет



Все верно, ну просто надо учитывать тонкости языка. 
А для определения булевая ли переменная есть is_bool() - это Вам нужно ?
PM MAIL WWW   Вверх
Antony41
Дата 14.11.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



is_bool это не совсем то что нужно
нужно чтоб при проверке на true возвращала входной параметр(естественно того же типа)

Добавлено через 2 минуты и 28 секунд
можно впринципе и обойтись))) так просто для интереса спрашиваю.
функция is_result не самая большая smile 
PM MAIL   Вверх
Aliance
Дата 14.11.2012, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Странная функция, которая возвращает результат только в половине случаев. А в остальной половине что? void?

Код

return $bool ?: ''; // если $bool == TRUE, вернёт $bool, иначе вернёт пустую строку;

return (bool) $bool; // приведет $bool к типу boolean и вернёт TRUE, иначе вернёт FALSE

PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 14.11.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



а в остальной половине NULL или 0 или false смотря с каким типом работать

Добавлено через 12 минут и 23 секунды
испоьзовать так например
Код

function my_function($var1, $var2, $var3, $var4);
{
return is_result($var1).is_result($var2).is_result($var3).isresult($var4);
}


если рассматривать $var как строки то вернет только те которые были указаны
А вот подобная ей
Код

    //Возвращает или не возвращает $value в зависимости от установленного параметра $bool_flag
    public static function is_result_flag($bool_flag, $value)
    {
        if($bool_flag) return $value;
    } 


а вот эта вернет если параметры $bool_flag и $value указаны
Код

    //Возвращает или не возвращает $value в зависимости от установленного параметра $bool_flag
    public static function is_result_flags($bool_flag, $value)
    {
        if($bool_flag) return is_result($value);
    } 

PM MAIL   Вверх
Antony41
Дата 14.11.2012, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Цитата(Aliance @  14.11.2012,  10:25 Найти цитируемый пост)
return (bool) $bool; // приведет $bool к типу boolean и вернёт TRUE, иначе вернёт FALSE

да не нужно мне что бы она мне true или false возвращала именно в этом и фишка чтобы при true возвращала сам параметр а при false 
NULL или false или 0 или '' я не привязан к конкретному типу

пример я приводил в первом сообщении

допустим хочу сделать функцию запросов в БД
Код

    public static function get_table($t_name, $sub_query = '', $sorted = '')
    {
        $query = "SELECT * FROM ".$t_name.' '.is_result($sub_query).' '.is_result($sorted);
        if(!empty($sorted))
            $query .= " ORDER BY ".$sorted;
        $result = self::get_query($query);
        if($result)
            return self::db_result_to_arr($result); //пошла дальше обрабатываться 
    }


а если бы её не было тогда бы пришлось делать дополнительную проверку
Код

$query = "SELECT * FROM ".$t_name;
if($sub_query) $query .= ' '.$sub_query;
if($sorted) $query .= ' '.$sorted;


можно много применений найти

Это сообщение отредактировал(а) Antony41 - 14.11.2012, 13:11
PM MAIL   Вверх
Aliance
Дата 14.11.2012, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



 smile зачем такое вообще нужно, конкретную ситуацию приведи.
PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 14.11.2012, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Цитата(Aliance @  14.11.2012,  12:31 Найти цитируемый пост)
 зачем такое вообще нужно, конкретную ситуацию приведи. 

привел постом выше
для того чтобы не делать лишних движений
PM MAIL   Вверх
Aliance
Дата 14.11.2012, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Вообще весь мир уже пользуется sql builder`ами для таких целей. Если же говорить о raw-query, то не вижу чем вариант с проверкой плох. Разве что он должен быть более правильный, имхо:
Код

if ( ! empty($var))
    $sql .= ' '.$var;


В кохане есть прикольная штука для нечто похожей логики, мне она очень по душе:
Код

class Arr {
    static get($array, $key, $default = NULL)
    {
        // если предполагается только для массивов, 
        // я бы заменил isset($array[$key])
        // на array_key_exists($key, $array)
        return isset($array[$key]) ? $array[$key] : $default;
    }
}

$id = Arr::get($_POST, 'user_id', 0);


Зачем же редактировать пост и нарушать полностью логику тех, кто будет читать тему с начала.  smile 
PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 14.11.2012, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



функция которую вы привели я так понимаю проверяет существует ли значение переданное в POST запросе и если да возвращает его а если нет - null
отличная весчь)) тоже кстате упрощает задачи типа

Код

$id = $S_POST['id'];
if ((!$id) == '') 
$id = 0;

 надо взять в коллекцию))


Цитата(Aliance @  14.11.2012,  12:45 Найти цитируемый пост)
if ( ! empty($var))
    $sql .= ' '.$var;

а чем же отличается empty от bool???

ведь это одно и тоже я так понимаю?
Код

if (($var))
     $sql .= ' '.$var;[/quote]


Добавлено @ 13:09
про sql builder щас почитаю спасибо

Добавлено @ 13:14
Цитата(Antony41 @  14.11.2012,  13:07 Найти цитируемый пост)
если нет - null

извиняюсь возвращает null при не указанном параметре

Это сообщение отредактировал(а) Antony41 - 14.11.2012, 13:15
PM MAIL   Вверх
Antony41
Дата 14.11.2012, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



все таки я так понимаю стандартной функции такой нет?
просто лень через класс прописывать
Код

$result = MyClass::is_result($var)

PM MAIL   Вверх
Aliance
Дата 14.11.2012, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Antony41 @  14.11.2012,  14:07 Найти цитируемый пост)
функция которую вы привели я так понимаю проверяет существует ли значение переданное в POST запросе и если да возвращает его а если нет - null

в частном примере да, а вообще она проверяет есть ли ключ в массиве, и если есть возвращает его, если нет - возвращает значением по умолчанию, если оно установлено или NULL в ином случае.

Цитата(Antony41 @  14.11.2012,  14:07 Найти цитируемый пост)
а чем же отличается empty от bool???

тем что это более глобальная проверка, да и тем, что empty не ругнётся если переменной не существует. (аналогично поведению isset)
Кроме того могут быть коллизии, когда значение равно одному из: '', ' ', 'false', 0, '0' - тут нужно смотреть. По этой же причине array_key_exists предпочтительнее isset.

Добавлено через 44 секунды
Стандартной - нет. Есть empty, is_null и иже с ними, но это немного не то.
PM MAIL WWW ICQ Skype   Вверх
Antony41
Дата 14.11.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Цитата(Aliance @  14.11.2012,  14:24 Найти цитируемый пост)
empty не ругнётся если переменной не существует


а разве это выражение приводит к ошибке?
Код

if(!$var)
    var_dump((bool) $var);

ведь переменная $var не инициализирована!
а по моему разницы нет проверять так как выше или так
Код

if(empty($var))
    var_dump((bool) $var);

это чисто для самопонимания что если ты рабоешь со строкой то лучше проверять на empty
isset понятно а вот !$var или empty($var) ...

Добавлено через 3 минуты и 10 секунд
Спасибо всем за помощь в просветлении мозгов))
просто потрясающий язык программирования PHP! smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.