我如何将array_map与键和值一起使用,但是返回具有相同索引(不是int)的数组?

问题描述 投票:8回答:3

我有一个数组,例如['id' => 1, 'name' => 'Fred']

我想在此数组上调用array_map,并且还使用函数内部的键。但是,当我退货时,我的钥匙将变成整数。

简单示例:

$arr = array('id' => 1, 'name' => 'Fred');
$result = array_map(
    function ($value, $key) {
        return $value;
     },
     $arr,
     array_keys($arr)
);
var_dump($result);

基本上,在这种情况下,我希望$result$arr相同,但是它将我的字符串键转换为整数。

php arrays
3个回答
12
投票

您最接近使用array_map()的位置是这样:

<?php
$arr = array('id'=>1,'name'=>'Jon');

$callback = function ($key, $value) {
    return array($key => $value);
  };

$arr = array_map( $callback, array_keys($arr), $arr);
var_dump($arr);
?>

给予:

   [
     [
       "id" => 1
     ],
     [
       "name" => "Jon"
     ]
   ]

您最好在内部使用foreach创建自己的函数。


8
投票

对于您要求“ $ result与$ arr相同,请尝试:

$result = array_combine(
     array_keys($arr), 
     array_map(function($v){ return $v; }, $arr)
);

给予:

   [
     "id" => 1
     "name" => "Fred"
   ]

0
投票

您需要的是array_walk。尝试以下代码:

$arr = array('id' => 1, 'name' => 'Fred');
array_walk(
    $arr,
    function (&$value, $key) {
        // do stuff
     }
);
print_r($arr);

不幸的是,当您尝试更改键时,它不起作用。但是,当您通过引用传递它们时,可以更改它们的值。

如果您也想更改键,请选中对array_walk-change-keys的问题和第一个答案:

© www.soinside.com 2019 - 2024. All rights reserved.