【问题标题】:Map a PHP array with another array用另一个数组映射一个 PHP 数组
【发布时间】:2021-05-02 12:24:19
【问题描述】:

我想用另一个映射映射 PHP 数组值。我的意思是这样的:

<?php

  function as_function($array) {
    return fn ($x) => $array[$x];
  }

  $x = array('a', 'b');
  $y = array('a' => 3, 'b' => 5, 'c' => 7);

  print_r(array_map(as_function($y), $x));

此代码以预期结果结束:

Array
(
    [0] => 3
    [1] => 5
)

我想知道是否有一些更聪明的方法可以将array_map(as_function 替换为一些 PHP 内置函数?

【问题讨论】:

  • 您能澄清一下您要做什么吗?我不确定为什么这是一个意外结果或预期结果是什么。
  • 我对这个问题感到困惑,as_function()这里不需要,你可以直接使用array_map(fn ($x) =&gt; $y[$x], $x)。您是在问 PHP 中是否有内置函数来更改键值?如果是这样,没有。
  • 我纠正你想要来自$y 的值,其中键在$x 中吗?
  • @Michel 是的。这是我想要的。我提出了一种方法来做到这一点。但我想知道是否有更好的方法来实现这一点。

标签: php arrays built-in


【解决方案1】:

也许是简单的 foreach?

foreach($x as $k => $v){
   $x[$k] = $y[$v];
}

print_r($x);

-> Working example.

或者您可以使用array_filter(),然后使用array_values(),但是...待定...这取决于您想要一个好的解决方案还是一个简短的解决方案。我介绍的那个是你能得到的最短的,而且可能是最快的。

【讨论】:

    【解决方案2】:

    这很有趣,但你可以试试这个以获得类似的结果。

    print_r(array_intersect_key($y,array_flip($x)));
    

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      相关资源
      最近更新 更多