当前位置: 首页 > 面试题库 >

PHP的array_map包括键

韩耘豪
2023-03-14
问题内容

有没有办法做这样的事情:

$test_array = array("first_key" => "first_value", 
                    "second_key" => "second_value");

var_dump(array_map(function($a, $b) { return "$a loves $b"; }, 
         array_keys($test_array), 
         array_values($test_array)));

但是,不是调用array_keysarray_values,而是直接传递$test_array变量?

所需的输出是:

array(2) {
  [0]=>
  string(27) "first_key loves first_value"
  [1]=>
  string(29) "second_key loves second_value"
}

问题答案:

不适用于array_map,因为它不处理键。

array_walk可以:

$test_array = array("first_key" => "first_value",
                    "second_key" => "second_value");
array_walk($test_array, function(&$a, $b) { $a = "$b loves $a"; });
var_dump($test_array);

// array(2) {
//   ["first_key"]=>
//   string(27) "first_key loves first_value"
//   ["second_key"]=>
//   string(29) "second_key loves second_value"
// }

但是,它确实会更改作为参数给定的数组,因此它不完全是函数式编程(因为您有这样标记的问题)。而且,正如注释中指出的那样,这只会更改数组的值,因此键将不是您在问题中指定的键。

如果需要,您可以编写一个函数来固定自己之上的要点,例如:

function mymapper($arrayparam, $valuecallback) {
  $resultarr = array();
  foreach ($arrayparam as $key => $value) {
    $resultarr[] = $valuecallback($key, $value);
  }
  return $resultarr;
}

$test_array = array("first_key" => "first_value",
                    "second_key" => "second_value");
$new_array = mymapper($test_array, function($a, $b) { return "$a loves $b"; });
var_dump($new_array);

// array(2) {
//   [0]=>
//   string(27) "first_key loves first_value"
//   [1]=>
//   string(29) "second_key loves second_value"
// }


 类似资料:
  • 如果类位于一个文件中,则看起来不会发生严格的错误,如下所示: 但是,如果您将类定义放在单独的文件中并像这样包含它们: 抛出严格标准错误消息: 严格的标准:的声明应与c:\path\to\Cat中的兼容。php在线。。。 如果所有内容都在一个文件中,即使这样也可以: 这是预期的行为吗? 因为< code >肉是< code >食物,所以一开始就不应该有抱怨,对吗?因此,解决方案是简单明了的:将所有内

  • 问题内容: 我无法在我的PHP脚本中包含一个远程PHP文件。我想我的托管更改了php设置。 我使用的代码是: 如何允许使用php.ini / .htaccess启用包含功能? 还有其他解决方法吗? 谢谢。 问题答案: 要允许 包含 远程文件,必须在php.ini中将该指令设置为 但是,从面向安全性的角度来看,这是不好的。因此,通常将其禁用(实际上,我从未见过启用) 它与处理打开(不包括)远程文件的

  • 问题内容: 我有这个小代码,实际上是一个登录脚本,它检查寄存器是否打开,并在登录按钮后显示: 我的问题是这一行: include(“ ../ inc / db.php”); 警告:include(E:/wamp/www//inc/db.php):无法打开流:第3行的E:\ wamp \ www \ proiect1-test \ scripts \ login.php中没有此类文件或目录:incl

  • 问题内容: 这三种方法(都用于将一个数组转换为另一个数组)之间的性能差异(如果有)是什么? 使用 使用和λ/关闭功能 使用带有“静态”函数/方法 还有其他方法吗? 为了使自己清楚,让我们看一下这些示例,它们都做同样的事情-将数字数组乘以10: 佛瑞奇 带有lambda的地图 具有“静态”功能的地图,作为字符串引用传递 还有其他方法吗?我将很高兴听到上面案例之间的 所有 实际差异,以及为什么要使用一

  • null 还有其他办法吗?我将很高兴听到实际所有的差异之间的情况从上面,以及任何输入为什么应该使用一个而不是其他。

  • 问题内容: 我想用PHP包装CSS文件…因此,我为CSS文件编写了标头,并给了它一个.php文件扩展名,因此… css.php。 如果该页面已被用作包含内容,是否可以使用?还是这个新标题与页面所包含的框架冲突? 问题答案: 加纳夫钉牢了它。 我做: 然后在您的.css.php文件顶部: