在if语句中使用PHP eval()

在if语句中使用PHP eval(),php,Php,不知道如何使用eval()我以为我正确地阅读了文档,正在尝试这样做(我知道逻辑很糟糕,但我只是在尝试) 查看这些示例(),它应该以一行代码的形式运行字符串中的任何内容。还有这个定义“eval()函数将字符串计算为PHP代码。”从基本上讲,我试图将一行代码存储在变量中,并让它像在JavaScript中一样运行。非常新的PHP,如果我的问题是愚蠢的,我很抱歉 编辑: 我已经阅读了很多帖子,解释了为什么eval()是一个糟糕的工具,老实说,我只是出于好奇才这么问的 编辑2: meagar的代码运行得非

不知道如何使用
eval()
我以为我正确地阅读了文档,正在尝试这样做(我知道逻辑很糟糕,但我只是在尝试)

查看这些示例(),它应该以一行代码的形式运行字符串中的任何内容。还有这个定义“eval()函数将字符串计算为PHP代码。”从基本上讲,我试图将一行代码存储在变量中,并让它像在JavaScript中一样运行。非常新的PHP,如果我的问题是愚蠢的,我很抱歉

编辑: 我已经阅读了很多帖子,解释了为什么
eval()
是一个糟糕的工具,老实说,我只是出于好奇才这么问的

编辑2:

meagar的代码运行得非常出色,我唯一要做的就是在字符串结束之前添加分号。我去编辑他的文章,但我的编辑被拒绝了。这是对我有用的代码……显然,我将把它改成我的同龄人不会嘲笑的东西

if($showUnlisted){
    $unlistedIfStatement = 'return !$price || $car["sale_price"] == 0 ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);';
}
else{
    $unlistedIfStatement = 'return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);';
}
if(eval($unlistedIfStatement)){
    //DO SOME STUFF
}
if($showUnlisted){
$unlistedIfStatement='return!$price | |$car[“sale|u price”]==0 | | |($priceFrom=$car[“sale|u price”]);
}
否则{
$unlistedIfStatement='return!$price | | |($priceFrom=$car[“售价]);';
}
if(评估($unlistedIfStatement)){
//做点什么
}
您链接到的内容非常清楚:

eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值

每个求值行必须
返回一个值,或者求值为
null

if($showUnlisted){
     $unlistedIfStatement = 'return !$price || $car["sale_price"] == 0 ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
else{
    $unlistedIfStatement = 'return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
if(eval($unlistedIfStatement)){
        //DO SOME STUFF
}
if($showUnlisted){
$unlistedIfStatement='return!$price | |$car[“sale|u price”]==0 | | |($priceFrom=$car[“sale|u price”]);
}
否则{
$unlistedIfStatement='return!$price | |($priceFrom=$car[“sale_price]”);
}
if(评估($unlistedIfStatement)){
//做点什么
}
您链接到的内容非常清楚:

eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值

每个求值行必须
返回一个值,或者求值为
null

if($showUnlisted){
     $unlistedIfStatement = 'return !$price || $car["sale_price"] == 0 ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
else{
    $unlistedIfStatement = 'return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
if(eval($unlistedIfStatement)){
        //DO SOME STUFF
}
if($showUnlisted){
$unlistedIfStatement='return!$price | |$car[“sale|u price”]==0 | | |($priceFrom=$car[“sale|u price”]);
}
否则{
$unlistedIfStatement='return!$price | |($priceFrom=$car[“sale_price]”);
}
if(评估($unlistedIfStatement)){
//做点什么
}
您链接到的内容非常清楚:

eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值

每个求值行必须
返回一个值,或者求值为
null

if($showUnlisted){
     $unlistedIfStatement = 'return !$price || $car["sale_price"] == 0 ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
else{
    $unlistedIfStatement = 'return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
if(eval($unlistedIfStatement)){
        //DO SOME STUFF
}
if($showUnlisted){
$unlistedIfStatement='return!$price | |$car[“sale|u price”]==0 | | |($priceFrom=$car[“sale|u price”]);
}
否则{
$unlistedIfStatement='return!$price | |($priceFrom=$car[“sale_price]”);
}
if(评估($unlistedIfStatement)){
//做点什么
}
您链接到的内容非常清楚:

eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值

每个求值行必须
返回一个值,或者求值为
null

if($showUnlisted){
     $unlistedIfStatement = 'return !$price || $car["sale_price"] == 0 ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
else{
    $unlistedIfStatement = 'return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"])';
}
if(eval($unlistedIfStatement)){
        //DO SOME STUFF
}
if($showUnlisted){
$unlistedIfStatement='return!$price | |$car[“sale|u price”]==0 | | |($priceFrom=$car[“sale|u price”]);
}
否则{
$unlistedIfStatement='return!$price | |($priceFrom=$car[“sale_price]”);
}
if(评估($unlistedIfStatement)){
//做点什么
}

如另一个答案所示,
eval()
在没有返回值的情况下返回null。但是,您实际需要的是:

在代码中的某个地方:

function showUnlisted() {
  return !$price || $car["sale_price"] == 0 || ($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

function dontShowUnlisted() {
  return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

这可以防止您沦为这些功能的牺牲品,让您能够测试这些功能,更有效地利用IDE,并更好地预测结果。将函数作为对象传递是一件很有用的事情,虽然在PHP中很难使用,但在更现代的语言(Scala、C#等)中这是一种常见的做法。

如另一个答案所示,
eval()
在没有返回值的情况下返回null。但是,您实际需要的是:

在代码中的某个地方:

function showUnlisted() {
  return !$price || $car["sale_price"] == 0 || ($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

function dontShowUnlisted() {
  return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

这可以防止您沦为这些功能的牺牲品,让您能够测试这些功能,更有效地利用IDE,并更好地预测结果。将函数作为对象传递是一件很有用的事情,虽然在PHP中很难使用,但在更现代的语言(Scala、C#等)中这是一种常见的做法。

如另一个答案所示,
eval()
在没有返回值的情况下返回null。但是,您实际需要的是:

在代码中的某个地方:

function showUnlisted() {
  return !$price || $car["sale_price"] == 0 || ($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

function dontShowUnlisted() {
  return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

这可以防止您沦为这些功能的牺牲品,让您能够测试这些功能,更有效地利用IDE,并更好地预测结果。将函数作为对象传递是一件很有用的事情,虽然在PHP中很难使用,但在更现代的语言(Scala、C#等)中这是一种常见的做法。

如另一个答案所示,
eval()
在没有返回值的情况下返回null。但是,您实际需要的是:

在代码中的某个地方:

function showUnlisted() {
  return !$price || $car["sale_price"] == 0 || ($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

function dontShowUnlisted() {
  return !$price ||($priceFrom <= $car["sale_price"] && $priceTo >= $car["sale_price"]);
}

这可以防止您沦为这些功能的牺牲品,让您能够测试这些功能,更有效地利用IDE,并更好地预测结果。将函数作为对象传递是一件很有用的事情,虽然在PHP中很笨拙,但在更现代的语言(Scala、C#等)中这是一种常见的做法。

Eval通常被称为不安全的:为什么不能用$unlistedIfStatement创建一个if-else列表呢?这是一种构造代码的次优方式。根本不是有效使用
eval
。这也是构造类似JavaScript代码的错误方法。你不应该依赖于
eval
。是的,我不打算这样做,还有很多其他的方法,我只是想知道如何将整行代码存储到一个变量中,并在phpEval中执行它通常被称为不安全:为什么你不能创建一个