[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: можно ли менять Операторы сравнения в условии
arbuzmaster
Подскажите пожалуйста можно ли как то подставлять Операторы сравнения в условии IF передавая их в значении переменной ?
например здесь:

if($temp <= $temp_start_value)
{
}



_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
AllesKlar
запросто
if( $result = $temp <= $temp_start_value) 
{
// .....
}

var_dump($result);


Но лично мне по душе другая конструкция
$result = $temp <= $temp_start_value;
if( $result )
{
// .....
}


_____________
[продано копирайтерам]
arbuzmaster
я имел в виду сами операторы <= > < >= = ?
насколько я понял в $result приходит true или fale

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
AllesKlar
arbuzmaster
Операторы сравнения внести в переменную?
Типа ;
$condition = '<=';

if( $a $condition $b)
{
// .....
}

Так чтоле? Не, так нельзя. Можно извратииться через eval, но в 99,99% случаев это неверный путь.

Опиши задачу, поберем тебе красивое решение ;)

_____________
[продано копирайтерам]
sergeiss
Цитата (arbuzmaster @ 24.09.2015 - 23:42)
я имел в виду сами операторы <= > < >= = ?

eval - http://php.net/manual/ru/function.eval.php
Только нужно быть уверенным, что пользователь не может туда ничего передать.

Вот что-то типа такого можно сделать.
$condition = [ 'gt' => '>=', 'lt' => '<=', 'eq' => '=='];

$val1 = 123;
$val2 = 432;

eval ( '$compare = $val1 '. $condition['eq'] . ' $val2;' );

echo $compare ? 'true' : 'false';


PS. AllesKlar, насчет "изврата" не согласен :) Да, с умом надо делать. Не более того.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
arbuzmaster
Задача следующего характера нужно сравнивать 2 значения в зависимости от выбранного условия (больше или равно, меньше или равно, равно, больше, меньше) но при этом условие сравнения передается в скрипт.
Логически это должно выглядеть примерно так:

$op_srav=$GET_['operand']; // есть возможность задать жесткое значение, чтобы пользователь не мог записать туда ни чего кроме того что нужно.
if($op_srav=="bolshe_ravno")
{
if($temp <= $temp_start_value)
{
}
}

if($op_srav=="menshe_ravno")
{
if($temp >= $temp_start_value)
{
}
}

// и так далее


eval(); вроде как то что нужно если в $condition передавать сам оператор сравнения.

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
inpost
if-else и разные условия - норм решение.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Invis1ble
switch-case в помощь, и не надо никаких извратов
ну или if-else

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

arbuzmaster
Тогда все понятно ! Лучше ничего нового не изобретать а сделать через условия! Всем спасибо!

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
volter9
arbuzmaster
Можно воспользоватся замыканиями:
$ops = [
'<=' => function ($a, $b) { return $a <= $b; },
'>=' => function ($a, $b) { return $a >= $b; }
];

$op = '<=';
$op = $ops[$op];

if ($op($temp, $temp_start_value)) {
/* ... */
}


_____________
Мой блог
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.