[英]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
)
你好,試試普通的 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)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.