php - 将函数应用于数组的简单方法

标签 php arrays

我知道 array_walk()array_map()。然而,当像这样使用前者时(在一个旧项目上)它失败了

array_walk($_POST, 'mysql_real_escape_string');

Warning: mysql_real_escape_string() expects parameter 2 to be resource, string given.

所以我选择了这个稍微丑一点的版本

foreach($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}

那么为什么第一种方法行不通呢?将数组值映射到函数的最佳方法是什么?

最佳答案

传递给array_walk的回调函数期望接受两个参数,一个用于值,一个用于键:

Typically, funcname takes on two parameters. The array parameter's value being the first, and the key/index second.

但是mysql_real_escape_string期望第二个参数是资源。这就是您收到该错误的原因。

使用 array_map相反,它只获取每个项目的值并将其传递给给定的回调函数:

array_map('mysql_real_escape_string', $_POST);

第二个参数将被省略,因此使用最后打开的连接。

如果需要传递第二个参数,则需要将函数调用包装在另一个函数中,例如一个anonymous function :

array_map(function($string) use ($link) { return mysql_real_escape_string($string, $link); }, $_POST);

关于php - 将函数应用于数组的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270303/

相关文章:

c - 将指针的指针传递给函数,同时返回一个 int 和一个地址(通过参数)

php - Laravel - 在插入之前检查数据库参数的有效方法

php - 调用未定义函数 openssl_decrypt

php - 推送到数组的特定位置

java - 如何撤消 Vaadin Canvas 上最后绘制的框?

C - 如何对一维数组中的数字进行分组排序?

php - 如何从继承方法中调用 PHP 父方法?

php - 如何解决 PHP 中的 OpenSSL "EVP_DecryptFinal_ex:bad decrypt"错误?

javascript - jQuery ajax,附加数据有效但数据对另一端(计算机/用户)可见吗?

javascript - 如何更新本地存储阵列