eval для фильтрации значений, содержащих поиск в многомерном массиве - PullRequest
0 голосов
/ 22 ноября 2018

Я пытался создать функцию для фильтрации значений LIKE в нескольких столбцах многомерного массива.Я попытался перебрать массив имен столбцов, чтобы создать функцию strpos, но в строковом формате.Когда я использовал eval для запуска взорванной строки кода, я получил ошибку «Неожиданный конец файла, eval d'code в строке xx».

Я не понимаю проблему.Вот функция:

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 голосов
/ 22 ноября 2018
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);
}

Сделано.Благодаря.

...