2

正規の PHPdoc の例を使用すると、このコードは次のようになります。

<?php
function cube($n)
{
    return($n * $n * $n);
}

$a = array( 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>

出力

配列

(
    [0] => 27
    [1] => 64
    [2] => 125
)

しかし、私が本当に出力したいのは、これらの行に沿ったものです: 配列

(
    [3] => 27
    [4] => 64
    [5] => 125
)

つまり、array_map で元の配列と同じキーを使用する必要があります。それを行う方法はありますか?ありがとう!

4

4 に答える 4

2

使用array_combine():

$b = array_combine( $a, array_map("cube", $a));

このデモから、次のものが生成されることがわかります。

Array
(
    [3] => 27
    [4] => 64
    [5] => 125
)
于 2013-07-03T18:50:00.497 に答える
1

を使用せずarray_map、明示的にマップするだけvaluesです。しかし、これで十分です:

array_combine($a, array_map('cube', $a))
于 2013-07-03T18:50:34.937 に答える
1

array_map を使用してキーを書き換えることはできませんが、array_reduce をクロージャーで使用できます (PHP 5.3+)

<?php
function cube($n){
    return $n*$n*$n;
}

$data = array(3,4,5);
$function = "cube";
$res = array_reduce($data, function(&$result = array(), $item) use($function){

   if (!is_array($result)){
    $result = array();
   };
   $result[$item] = $function($item);
   return $result;
});

print_r($res);

出力は

Array
(
    [3] => 27
    [4] => 64
    [5] => 125
)
于 2013-07-03T19:10:16.660 に答える