在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中执行它通常被称为不安全:为什么你不能创建一个