如何返回PHP字符串的文字值,使其作为代码运行?

我是

我不确定即使在这里我也使用正确的术语,但是我会尽力解释。我正在使用PHP的array_filter函数来过滤产品,它会回调到我在添加过滤器的地方创建的自定义函数。我可以很容易地对它进行硬编码,但是我显然希望它是动态的:

长话短说,自定义过滤器函数返回array_filter()函数,如下所示:

return ($arr['colour']=='Red' || $arr['colour']=='White');

如果像上面这样进行硬编码,这可以很好地工作,并且可以按预期过滤数组以仅显示红色或白色的产品。但是,我需要保持动态。

那么,如何构造一个值字符串,然后在return语句中使用它呢?

例如:

$var = "$arr['colour'] == 'Red' || $arr['colour'] == 'White'";
return ($var);

这没用。我尝试使用eval()(无论如何我都不想使用它!),它仍然无法正常工作。

我有一个循环,如下所示从数组构造字符串:

// $value=array of filters e.g colour=Black, colour=Red

$filterparts = explode("=", $value);

$filters[] = '$arr[\'' . $filterparts[0] . '\'] == \'' . $filterparts[1] . '\'';
// Creates array e.g $arr['colour'] = 'Red'

$imploded_filter = implode(" || ", $uniquefilters);
// Creates string, e.g. $arr['colour'] = 'Red' || $arr['colour'] = 'White'

因此,如果我回显$ imploded_filter,我将获得返回的提取字符串:

echo $imploded_filter;
// Outputs $arr['colour'] = 'Red' || $arr['colour'] = 'White'

但是如果我这样做

return($imploded_filter);

显然不是将字符串作为硬代码来评估,那我该怎么办?我是否需要对字符串做一些事情或以不同的方式返回它,或者以完全不同的方式构造需要返回的代码?

ShiraNai7

数组键可以动态指定。不需要eval()

$value = $array[$key];

您可以构建一个过滤器列表,并在array_filter()回调中将它们匹配

$filters = array(
    array('colour', array('white', 'blue')), // Multiple accepted values (OR)
    array('material', 'Fine Bone China'), // Single accepted value
);

$filtered = array_filter($products, function ($item) use ($filters) {
    // Match all filters
    foreach ($filters as $filter) {
        // Detect multi-value filter
        $isArrayFilter = is_array($filter[1]);

        if (
            // Check if multi-value filter doesn't match
            $isArrayFilter && !in_array($item[$filter[0]], $filter[1])
            // Check if a single-value filter doesn't match
            || !$isArrayFilter && $item[$filter[0]] != $filter[1]
        ) {
            // Filter doesn't match - exclude the item
            return false;
        }
    }

    // All filters match - include the item
    return true;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何执行字符串php代码来运行

来自分类Dev

如何返回 JSON 字符串的值?

来自分类Dev

{{ }} 内的字符串作为插值代码

来自分类Dev

如何在bash中将带值的字符串作为命令运行?

来自分类Dev

我应该如何处理命令或函数的返回值?作为字符串还是整数?

来自分类Dev

如何仅将值作为字符串而不是集合返回?

来自分类Dev

如何返回字符串的地址(作为字符指针)

来自分类Dev

从字符串返回字典值作为元组或列表

来自分类Dev

从For Loop Java作为字符串值返回

来自分类Dev

流星返回值作为字符串

来自分类Dev

从字符串返回字典值作为元组或列表

来自分类Dev

部分字符串作为字段值返回 mysql

来自分类Dev

如何返回PHP $ _POST数组作为可用作名称属性的字符串?

来自分类Dev

如何将字符串作为字符值访问

来自分类Dev

如何使用字符串作为代码?

来自分类Dev

在PHP中返回给定字符之前的字符串值

来自分类Dev

如何使用值作为由“-”分割的字符串对 PHP 数组进行排序

来自分类Dev

将字符串作为指针或文字传递时,不一致的strcmp()返回值

来自分类Dev

如何从函数返回的对象键和值生成字符串文字的类型?

来自分类Dev

如何删除双字符串以使其仅作为第一个单词?

来自分类Dev

如何从联结表中检索值作为字符串?

来自分类Dev

如何获取父节点的值作为字符串?

来自分类Dev

如何使用字符串的值作为对象的名称?

来自分类Dev

如何获取父节点的值作为字符串?

来自分类Dev

如何快速接受RateController的Rating值作为字符串

来自分类Dev

如何使用构造函数创建C#类并使其返回字符串?

来自分类Dev

如何使用构造函数创建C#类并使其返回字符串?

来自分类Dev

PHP中的字符串比较-始终返回错误的值

来自分类Dev

PHP-如何用PHP代码替换字符串?

Related 相关文章

  1. 1

    如何执行字符串php代码来运行

  2. 2

    如何返回 JSON 字符串的值?

  3. 3

    {{ }} 内的字符串作为插值代码

  4. 4

    如何在bash中将带值的字符串作为命令运行?

  5. 5

    我应该如何处理命令或函数的返回值?作为字符串还是整数?

  6. 6

    如何仅将值作为字符串而不是集合返回?

  7. 7

    如何返回字符串的地址(作为字符指针)

  8. 8

    从字符串返回字典值作为元组或列表

  9. 9

    从For Loop Java作为字符串值返回

  10. 10

    流星返回值作为字符串

  11. 11

    从字符串返回字典值作为元组或列表

  12. 12

    部分字符串作为字段值返回 mysql

  13. 13

    如何返回PHP $ _POST数组作为可用作名称属性的字符串?

  14. 14

    如何将字符串作为字符值访问

  15. 15

    如何使用字符串作为代码?

  16. 16

    在PHP中返回给定字符之前的字符串值

  17. 17

    如何使用值作为由“-”分割的字符串对 PHP 数组进行排序

  18. 18

    将字符串作为指针或文字传递时,不一致的strcmp()返回值

  19. 19

    如何从函数返回的对象键和值生成字符串文字的类型?

  20. 20

    如何删除双字符串以使其仅作为第一个单词?

  21. 21

    如何从联结表中检索值作为字符串?

  22. 22

    如何获取父节点的值作为字符串?

  23. 23

    如何使用字符串的值作为对象的名称?

  24. 24

    如何获取父节点的值作为字符串?

  25. 25

    如何快速接受RateController的Rating值作为字符串

  26. 26

    如何使用构造函数创建C#类并使其返回字符串?

  27. 27

    如何使用构造函数创建C#类并使其返回字符串?

  28. 28

    PHP中的字符串比较-始终返回错误的值

  29. 29

    PHP-如何用PHP代码替换字符串?

热门标签

归档