如何获得类似于array_walk的PHP函数,该函数将返回数组?

时间:2018-11-30 14:24:14

标签: php arrays function closures 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 个答案:

答案 0 :(得分:2)

  

use关键字允许您将局部变量引入局部   匿名函数的范围。这在您使用   将匿名函数传递给您没有的其他函数   控制。

无法使用array_map,因为这不适用于键(PHP's array_map including keys)。这是一个可能的解决方案:

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

答案 1 :(得分:2)

不要使事情复杂化。只需使用function delete(){ $connection = connectToDatabase(); $ID = $_REQUEST['ID']; if($ID!==""){ $result1 = mysqli_query($connection,"select Img1 from banners where ID='$ID' "); $row = mysqli_fetch_array($result1); $namefile1 = $row[0]; $namefile11=str_replace("http://bestabsd.com/bestfile/pics/", "", $namefile1); $base_directory = '/home/bestabsd/public_html/bestfile/pics/'; unlink($base_directory.$namefile11); mysqli_close($connection); }else { print "null"; } 来修改您的数组或创建一个新数组:

foreach

顺便确保对foreach ($presentable_cols as $key => $value) { $presentable_cols[$key] = "$key LIKE '% $request_data %'"; } 进行消毒。