1

我想创建一个 lambda 函数,我正在这样做:

create_function('$range',  'return " ( ABS(a.price) > format_money($range["min"] AND ABS(a.price) <  format_money($range["max"]) ) OR a.price is null " ');

但是 $range["min"] 部分打破了我的尝试......嵌套引号有问题,我不知道如何解决它,我什至不知道是否可以这样做或者 php 不是这么强,有光吗?

4

4 回答 4

2

使用转义的单引号并;解析它,不知道执行情况。

create_function('$range',  'return \' ( ABS(a.price) > format_money($range["min"] AND ABS(a.price) <  format_money($range["max"]) ) OR a.price is null \'; ');
于 2012-12-12T11:18:48.907 回答
1

我可以通过将您的值连接到这样的字符串来完成此操作:

create_function('$range',  'return " ( ABS(a.price) > format_money(" . $range["min"] . " AND ABS(a.price) <  format_money(" . $range["max"] . ") ) OR a.price is null "; ');

该函数的输出是:

string(92) " ( ABS(a.price) > format_money(10 AND ABS(a.price) <  format_money(20) ) OR a.price is null "
于 2012-12-12T11:17:29.643 回答
1

您不能在单引号内调用变量。

create_function('$range',  'return " ( ABS(a.price) > format_money('.$range["min"].' AND ABS(a.price) <  format_money('.$range["max"].') ) OR a.price is null " ');
于 2012-12-12T11:12:24.193 回答
0

算了,编错了,正确的做法是:

create_function('$range',  'return " ( ABS(a.price) > ".format_money($range[\'min\'])." AND ABS(a.price) < ".format_money($range[\'max\'])." ) OR a.price is null "; ');

现在它起作用了!

于 2012-12-12T11:15:56.473 回答