【问题标题】:Arrays with string keys or nested quotes into a lambda function in php带有字符串键或嵌套引号的数组到 php 中的 lambda 函数中
【发布时间】: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没有那么强大,有什么亮点吗?

【问题讨论】:

标签: php arrays lambda quotes


【解决方案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"] 作为字符串传递,而不是值!
        猜你喜欢
        • 2023-03-15
        • 1970-01-01
        • 2019-05-02
        • 1970-01-01
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多