【问题标题】:How to get a PHP function alike array_walk that will return an array? [closed]如何获得一个类似 array_walk 的 PHP 函数,它会返回一个数组? [关闭]
【发布时间】:2019-05-02 17:14:01
【问题描述】:

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

【问题讨论】:

  • array_maparray_walk 也可以修改数组。所有功能都在这里 - php.net/manual/en/ref.array.php
  • 但是array_map 不能取$userdata @u_mulder
  • 什么是 $userdata!?
  • 我不知道你在说什么。 $userdata 是什么?您应该描述一个真正的问题,而不是要求一个函数执行 what?。
  • $userdata 表示参数如 array_walk(array,myfunction,parameter...) @Devon

标签: php arrays function closures array-walk


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    顺便说一句,一定要清理$request_data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2021-04-29
      • 2021-08-25
      • 2011-05-12
      • 1970-01-01
      相关资源
      最近更新 更多