0

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
4

2 回答 2

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);
于 2018-11-30T14:48:13.650 回答
2

不要把事情复杂化。只需用于foreach修改您的数组或创建一个新数组:

foreach ($presentable_cols as $key => $value) {
    $presentable_cols[$key] = "$key LIKE '% $request_data %'";
}

顺便说一句,一定要消毒$request_data

于 2018-11-30T15:10:04.913 回答