eval для фильтрации значений, содержащих поиск в многомерном массиве

Я пытался создать функцию для фильтрации значений 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);
}

-2

Решение

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);
}

Сделано это. Благодарю.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector