【问题标题】:How can I find the array key from second array where the inner keys and values match first array?如何从内部键和值与第一个数组匹配的第二个数组中找到数组键?
【发布时间】:2019-09-02 12:55:23
【问题描述】:

我有数组 #1,其中包含:

Array
(
    [attribute_pa_color] => blue
    [attribute_pa_size] => large
)

我有数组 #2,其中包含:

Array
(
    [4624] => Array
        (
            [attribute_pa_color] => blue
            [attribute_pa_size] => large
        )

    [4625] => Array
        (
            [attribute_pa_color] => blue
            [attribute_pa_size] => medium
        )

    [4626] => Array
        (
            [attribute_pa_color] => blue
            [attribute_pa_size] => small
        )

)

如何从 Array #2 中找到内部键和值与 Array 1 匹配的数组键?

我一直在尝试多个 foreach,但我似乎无法做到这一点,这是我目前的想法:

$i = 0;
foreach( $array_2 as $array2_key => $array2_array ) {

    foreach( $array2_array as $a2_key => $a2_value ) {

        if( $a2_value == $array1[$a2key] ) {

            $i = $i + 1;

            if( $i == count( $array1 ) ) {

                $break = 1;

            }

            if( $break == 1 ) {

                break;

            }

        }

    }

    if( $break == 1 ) {

        echo 'key is: ' . $array2_key;

        break;

    }

}

【问题讨论】:

  • 我希望 $array1 分配正确。什么是 $in ?为什么要 $ 休息,然后休息?你在执行吗?我认为 if 条件应该有效。之后你想做什么?
  • $in 是一个错字,应该是 $i,它只是一个计数器,我编辑了这个问题。中断是作为条件完成的,因此我可以中断两个循环。
  • 只是 break; 不能作为 break 2; 退出循环的两个级别 - stackoverflow.com/questions/5880442/…

标签: php arrays array-key


【解决方案1】:

数组可以与==进行比较:

foreach ($array2 as $key => $item) {
    if ($item == $array1) {
        echo 'Item with key ' . $key;
    }
}

【讨论】:

  • $array1 是第一个数组。是吗?
  • 还能是什么?
  • 是的,这是第一个数组,谢谢你的回答 - 这是我完全过度思考的典型案例:S
【解决方案2】:

array_search 接受针的数组更容易:

$key = array_search($array1, $array2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2021-11-09
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多