【问题标题】:PHP array map to anther array [closed]PHP数组映射到另一个数组[关闭]
【发布时间】:2014-07-03 01:53:19
【问题描述】:

我需要映射

Array
(
    [0] => Array
        (
                [cid] => 1
                [value] => red
        )

    [1] => Array
        (
                [cid] => 2
                [value] => green
        )

    [2] => Array
        (
                [cid] => 3
                [value] => pink
        )

    [3] => Array
        (
                [cid] => 4
                [value] => yellow
        )
)

收件人:

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

我需要将 second 数组值 [0] => 2 映射到 first 数组中的 cid。换句话说,我需要 2 来映射到绿色值。

有什么帮助吗?谢谢。

【问题讨论】:

  • 这里的逻辑是什么?新数组中的顺序是从哪里来的,为什么结果中没有4
  • 2, 3, 1 是结果还是第二个输入数组?

标签: php arrays map array-map


【解决方案1】:

我会首先将第一个数组更改为更易于检查的内容。

<?php
$temp = array();
foreach ($array1 as $val) {
  $temp[$val['cid']] = $val['value'];
}
?>

现在你有了一个数组:

$temp[1] = "red";
$temp[2] = "green";
$temp[3] = "pink";
$temp[4] = "yellow";

那么你可以很容易地在第二个数组中使用它

<?php
$new= array();
foreach ($array2 as $key=>$val) {
  $new[$key] = $temp[$val];
}
?>

Codepad example

【讨论】:

  • 我花了几分钟才意识到他想要什么,你比我写的要好。
  • 酷!谢谢雨果!
【解决方案2】:

PHP >= 5.5.0

$colors = array_column($first, 'value', 'cid');

foreach($second as $value) {
    if(isset($colors[$value])) {
        echo $colors[$value];
    }
}

$first 是您的第一个数组,$second 显然是第二个。

【讨论】:

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