【问题标题】:Conditional string i.e. '>' to an object i.e. >条件字符串,即 '>' 到一个对象,即 >
【发布时间】:2016-08-12 14:33:21
【问题描述】:
$gted = (object)'>';
if(200 $gted 300){
    echo 'wow it worked';
}else{
    echo 'no it didnt work';
}

我正在尝试将 '>' 转换为条件 > 以在 if 语句中使用。谢谢。

【问题讨论】:

  • 您希望通过这样做达到什么目的?
  • 你不能只做if(200 > 300)吗?你的问题没有多大意义
  • 这是不可能的。你为什么不尝试一个简单的开关/外壳?
  • 运算符在语言中定义。即使您不能使用字符串进行多次取消引用,也不能使用它来获取运算符。您可以使用 eval 但 eval is evil。我建议你只使用 if-else。

标签: php


【解决方案1】:

这不会按照您的方式工作。变量在 PHP 中不能直接解释为运算符,另见this question

即使您可以将变量解释为运算符,但字符串“对象”中的内容不是大于号,它是一个 HTML 实体,在解释时 作为一个HTML实体,产生的东西看起来像一个大于号。

This question 有一些答案,其中包括算术运算符的一些变通方法,可用于存储要在if 语句中评估的结果。作为此答案中使用的示例,我借用@user187291 使用create_functionthis answer 的一部分并稍作修改:

$operator = '+';
$func = create_function('$a,$b', "return \$a $operator \$b;");

$result = $func(5, 1);
echo $result;

如您所料,回显结果将是6。您可以更改正在使用的运算符,以便伪匿名函数返回一个布尔值,然后您可以将其插入if 语句:

$operator = '>';
$func = create_function('$a,$b', "return \$a $operator \$b;");

$result = $func(200, 300);
if($result) {
    echo 'wow it worked';
} else {
    echo 'no it didnt work';
}

除非在我目前无法想象的极端和非常具体的情况下,我认为这不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2019-04-26
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多