带有字符串键或嵌套引号的数组到 php 中的 lambda 函数中

Posted

技术标签:

【中文标题】带有字符串键或嵌套引号的数组到 php 中的 lambda 函数中【英文标题】:Arrays with string keys or nested quotes into a lambda function in php 【发布时间】:2012-11-30 01:46:58 【问题描述】:

我想创建一个 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没有那么强大,有什么亮点吗?

【问题讨论】:

您可以使用 \" 转义您的 " 可能对您有帮助:***.com/questions/1909002/what-use-is-lambda-in-php 【参考方案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 "

【讨论】:

【参考方案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 \'; ');

【讨论】:

【参考方案3】:

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

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

现在可以了!

【讨论】:

【参考方案4】:

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

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 中的 lambda 函数中的主要内容,如果未能解决你的问题,请参考以下文章

关于js生成的字符串带有单双引号嵌套的问题

php json_encode后的json里面的int类型变成string类型

如何将带有对象的数组中的数据动态添加到嵌套数组中?

单引号和双引号的一些总结

带有双引号的 JAVASCRIPT var 到 PHP 并返回用于自动填充

PHP遍历函数将单个数组转换为带有子元素的嵌套数组 - 基于父ID