首页 > 解决方案 > 检查数组 1 的值是否存在于数组 2 的键中 - PHP

问题描述

我有两个数组:

$arr1 = Array
(
    [0] => Apple
    [1] => Ball
    [2] => whale
    [3] => Dog
    [4] => cat
)

$arr2 = Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [Red apple] => 27
            [tball] => 28
            [cat] => 29
            [Dog] => 30
            [blue ball] => 31
        )
    ]
)

在这里,我想检查第一个数组的值是否与('% like %')第二个数组的任何键匹配。我想就这个例子来解释一下。

$arr1在这里,您可以看到is的第一个值Apple,现在您可以Red apple在 arr2 上看到。这意味着这应该被视为匹配。但是,Ball不应该匹配,tball而是Ball应该匹配到blue ball

如果确实找到匹配项,那么我希望将值存储在$result数组中,如果没有匹配的值,则$result数组的特定索引必须为空。在这种情况下,我想要确切的结果:

$result= Array
(
    [0] => 27
    [1] => 31
    [2] => 
    [3] => 30
    [4] => 29
)

沙箱php

标签: phplaravel

解决方案


你好,试试常规的 exp 试试这个

   $arr1 = Array('Apple', 'Ball', 'whale', 'Dog', 'cat');
    $arr2=Array('Red apple' => 27, 'tball' => 28, 'cat' => 29, 'Dog' => 30, 'blue ball' => 31);
    $array=array();
    foreach ($arr1 as $arr) {
        $flag=false;
        foreach ($arr2 as $a=>$ar) {
            $search = '\b( ?'.$arr.')';
            if(preg_match("/{$search}/i", $a)) {
                array_push($array,$ar);
                $flag=true;
            }
        }
        if (!$flag) {
            array_push($array,'');
        }
    }
    var_dump($array); die;

推荐阅读