与两个数组一起工作,其中一个数组的值与另一个数组的键匹配。

3
我看到了一个类似问题的另一个提问,但我的问题似乎是不同的。
我有两个数组:
数组 #1:
Array
(
    [1] => Baby/Juvenile
    [2] => Bedding
    [3] => Room Decor
    [4] => Bath & Potty
    [5] => Feeding
    [7] => Furniture
    [8] => Bath
    [9] => Towels
    [10] => Shower Curtains
)

数组 #2

Array
(
    [1] => 5
    [2] => 7
    [3] => 9
)

我想要比较这些数组,并根据第二个数组中的值从第一个数组中提取键/值对。我的期望输出是:
   Array
(
    [5] => Feeding
    [7] => Furniture
    [9] => Towels
)

我尝试了各种数组函数,但好像无法弄清楚这个问题,如果有什么提示,将不胜感激,谢谢!


8
在对第二个数组执行array_flip()之后,使用array_intersect_key()组合两个函数:$result = array_intersect_key($array1, array_flip($array2)); - Mark Baker
虽然这是 PHP,但它仍然没有每个问题的神奇函数 :-) 您需要自己开发它。@Mark Baker几乎给了您所有的东西... - Itay Moav -Malimovka
太好了,我是初学者/中级者,我不知道array_flip()!谢谢! - Dan
这也是一个非常简单的 foreach 循环,你不必在所有事情上都使用内置函数。 - Barmar
我有一种感觉,这些数组实际上是数据库数据,可以通过适当的数据库查询更好地检索。SELECT id,name FROM categories WHERE id IN(5、7、9) - silkfire
这些数组来自我们数据库中的两个单独表,页面上已经有调用我们数据库数据的函数,所以问题只是如何以我想要使用的方式组织数据。 - Dan
1个回答

2
<?php

    $array_one = array
    (
        '1' => 'Baby/Juvenile',
        '2' => 'Bedding',
        '3' => 'Room Decor',
        '4' => 'Bath & Potty',
        '5' => 'Feeding',
        '7' => 'Furniture',
        '8' => 'Bath',
        '9' => 'Towels',
        '10' => 'Shower Curtains'
    );

    $array_two = array
    (
        '1' => 5,
        '2' => 7,
        '3' => 9
    );

    foreach($array_two as $value)
    {
        $result[$value] = $array_one[$value];
    }

    var_dump($result);

?>

将输出

array(3) {
  [5]=>
  string(7) "Feeding"
  [7]=>
  string(9) "Furniture"
  [9]=>
  string(6) "Towels"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接