【问题标题】:Indexing array with an array of keys Shorthand in PHP在 PHP 中使用一组键的简写索引数组
【发布时间】:2013-09-08 11:30:11
【问题描述】:

我经常发现自己拥有一个指向其他数组的键数组,并希望获得相应的值。例如,如果我想选择一个随机子数组,函数array_rand($array) 将返回一个随机索引数组,我想获取这些值。除此之外还有很多示例,但一般问题(通常由函数式编程风格引起)是我有一个键数组并且需要相应值的数组。这是一种冗长的方法,但我想知道是否有一些更短的方法来完成这项频繁的任务?

方式 1:

$array_of_values = array();
foreach($array_of_indices as $index)
    $array_of_values[] = $array_of_data[$index];

方式 2:

function index_array($index) { return $array_of_data[$index]; }
$array_of_values = array_map("index_array", $array_of_indices);

方式 3:

$array_of_values = array_intersect_key($array_of_data,
                   array_fill_keys($array_of_indices, ''));

我希望存在一些执行此操作的单一功能,但在阅读完文档后我找不到。有人知道更好的方法吗?

【问题讨论】:

  • 他想将一个数组中的键与另一个数组中的值组合起来,所以 array_values() 不适合这里。
  • 我自己,我更喜欢方式 1。它清楚地说明了代码的目标是什么,而不会使事情过于复杂。我很确定没有一个函数可以做你想做的事。

标签: php arrays functional-programming indexing


【解决方案1】:

没有可以自行执行此操作的函数,但是有一种比 way 3

更简单的方法
array_intersect_key($array_of_data, array_flip($array_of_keys));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2013-02-14
    • 2017-10-27
    相关资源
    最近更新 更多