簡體   English   中英

檢查數組 1 的值是否存在於數組 2 的鍵中 - PHP

[英]Check if the value of array 1 is present in the key of array 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第一個值是Apple ,現在您可以在 arr2 上看到Red apple 這意味着這應該被視為匹配。 但是, Ball不應與tball匹配,而Ball應與blue ball匹配。

如果它確實找到匹配,那么我想被存儲在價值$result數組,如果沒有匹配值的特定索引$result數組必須是空的。 在這種情況下,我想要確切的結果:

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

沙盒php

你好,試試普通的 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;

查看您的鏈接,實際數組看起來要大得多,我認為可以進行雙向匹配。
因此,我對要按類別分組的代碼的輸出略有不同。
如果有兩個匹配項,我不確定該怎么辦,應該檢索哪個數字?
我還使用了 preg_grep,它在數組上使用正則表達式而不是循環數組。
和 preg_quote 以確保正則表達式字符不會干擾正則表達式。

$arr1 = Array('Apple', 'Ball', 'whale', 'Dog', 'cat');
$arr2 = Array('Red apple' => 27, 'tball' => 28, 'cat' => 29, 'Dog' => 30, 'blue ball' => 31, 'dog food' => 25, 'green apple' => 111);
$keys = array_keys($arr2);

foreach($arr1 as $find){
    $matches = preg_grep("/\b" . preg_quote($find) . "/i", $keys);
    foreach($matches as $key => $word){
        $result[$find][] = $arr2[$word];
    }
}

var_dump($result);

輸出:

array(4) {
  ["Apple"]=>
  array(2) {
    [0]=>
    int(27)
    [1]=>
    int(111)
  }
  ["Ball"]=>
  array(1) {
    [0]=>
    int(31)
  }
  ["Dog"]=>
  array(2) {
    [0]=>
    int(30)
    [1]=>
    int(25)
  }
  ["cat"]=>
  array(1) {
    [0]=>
    int(29)
  }
}

https://3v4l.org/es2Gt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM