Как получить функцию 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,

Другие вопросы по тегам