我有两个数组:
$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
)
查看您的链接,实际数组看起来要大得多,我认为可以进行双向匹配。
因此,我对要按类别分组的代码的输出略有不同。
如果有两个匹配项,我不确定该怎么办,应该检索哪个数字?
我还使用了 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)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句