Передать оператор сравнения через аргумент функции

Я хотел бы, чтобы моя функция имела оператор сравнения в качестве аргумента (или, предпочтительно, как часть аргумента, такого как> 0):

Вместо

function comps($a,$b){
if ($a > $b)
echo "This works.";
}
comps(1,0);

Я хотел бы иметь возможность сделать что-то вроде

function comps($a,$b){
if ($a $b)
echo "This works.";
}
comps(1,'>0');

Я бился головой об стену от этого некоторое время. Я пробовал разные итерации:

"/>0"'>' . 0
(string)> 0

а также попытка сравнения в качестве третьего аргумента.

Фактическое использование:

function mysort($key,$match){
$temp_array = array();
global $students;

foreach ($students as $row) {
if($row[$key] > $match )
$temp_array[]= $row;
}

foreach ($temp_array as $row) {
echo $row['email'] . ', ';
}
}
mysort('suzuki', '0');

Спасибо

0

Решение

Вы можете сделать функцию возвращаемого типа и использовать по своему усмотрению.

Я сделаю вам функцию, как показано ниже:

<?php
function getCond($a, $b, $both) {
$data = false;
if($both) {
if($a == b) {
$data = true;
}
}else {
if($a > $b) {
$data = true;
}
}
return $data;
}

/*  Use Your Function  */
if (getCond(10, 5, true)) {      // condition for 10 == 5 and according to passed values you get false result in condition
echo "you result";
} else if (getCond(10, 5, false)) {  // condition for 10 > 5 and according to passed values you get false result in condition
echo "your result";
} else if (getCond(6, 5, false)){    // condition for 6 > 5 and according to passed values you get true result in condition
echo "your result";
}
?>

Вы также можете изменить эту функцию, как вы хотите 🙂

0

Другие решения

Кажется, самое простое решение для моего использования:

function comps($a,$b,$c){
if ($a > $b  and $a < $c)
echo "True";
}

comps(1,0,2);
?>
0