评估包含多维数组中搜索的值的eval

时间:2018-11-22 01:44:32

标签: php eval

我试图创建一个用于过滤多维数组的多列中的LIKE值的函数。我试图遍历列名数组以创建strpos函数,但以字符串格式。当我使用eval运行内含的代码字符串时,收到错误消息“文件意外结束,第xx行上的eval d'code”。

我不明白问题所在。这是函数:

public function ArrayFilterLike($array, $filter, $search){
    $result = [];
    foreach ($filter as $key => $value) {
        $filter[$key] = "strpos(\$data['$value'], \$search) !== false";
    }

    $filter = implode(" || ", $filter);

    foreach ($array as $data) {
        if(eval($filter)){
            $result[] = $data;
        }
    }

    print_r($result);
}

1 个答案:

答案 0 :(得分:0)

public function ArrayFilterLike($array, $filter, $search){
    $result = [];
    foreach ($filter as $key => $value) {
        $filter[$key] = "strpos(\$data['$value'], \$search) !== false";
    }

    $filter = implode(" || ", $filter);

    foreach ($array as $data) {
        if(eval("return $filter;")){
            $result[] = $data;
        }
    }

    print_r($result);
}

做好了。谢谢。