Как получить функцию PHP как array_walk, которая будет возвращать массив?
Есть ли в PHP встроенная функция? array_walk()
что вернет массив вместо true или false?
Для информации, я пытаюсь следующий код, но в результате получения кода OR
в конце строки мне нужно удалить это, следовательно, мне нужна альтернатива
$request_data = "Bablu"; //userdata
$presentable_cols = array('id'=>'13141203051','name'=>'Bablu Ahmed','program'=>'B.Sc. in CSE', 'country'=>'Bangladesh');
function myfunction($value,$key,$request_data)
{
echo " $key LIKE '% $request_data %' OR";
}
array_walk($presentable_cols,"myfunction", $request_data);
Результат кода:
id LIKE '% Bablu %' OR name LIKE '% Bablu %' OR program LIKE '% Bablu %' OR country LIKE '% Bablu %' OR
2 ответа
Решение
Ключевое слово use позволяет вводить локальные переменные в локальную область действия анонимной функции. Это полезно в случае, когда вы передаете анонимную функцию какой-то другой функции, которую вы не можете контролировать.
Невозможно использовать array_map, так как это не работает с ключами ( PHP array_map, включая ключи). Вот возможное решение:
$request_data = "Bablu"; //userdata
$presentable_cols = array('id'=>'13141203051','name'=>'Bablu Ahmed','program'=>'B.Sc. in CSE', 'country'=>'Bangladesh');
$my_arr = [];
$myfunction = function($value,$key) use ($request_data,&$my_arr)
{
array_push($my_arr," $key LIKE '% $request_data %'");
};
array_walk($presentable_cols,$myfunction);
echo implode("OR",$my_arr);
Не усложняй вещи. Просто используйте foreach
чтобы изменить ваш массив или создать новый:
foreach ($presentable_cols as $key => $value) {
$presentable_cols[$key] = "$key LIKE '% $request_data %'";
}
Кстати, обязательно продезинфицируйте $request_data
,