我知道这个平台上已经问过这个问题,但是我找不到解决问题的方法。
我想检查数组中是否存在一个或多个字符串,但是当我检查时它给我错误。
@Test
fun testOverlappingSessionDeletion() {
val realm = this.mockRealm
this.sessions = realm.where(Session::class.java).findAll() // monitor session deletions
this.sessions?.addChangeListener { t, changeSet ->
val deletedSessions = realm.where(Session::class.java).`in`("id", changeSet.deletions.toTypedArray()).findAll()
deletedSessions.forEach { it.cleanup() }
}
因此,我将变量$ b1放入数组
Looper.loop()
并使用 in_array 检查$ a1中是否存在$ b1
$a1 = array('J.S.S 1','J.S.S 2','J.S.S 3','S.S 1','S.S 2','S.S 3','Primary One','Primary Two','Primary Three','Primary Four','Primary Five','Primary Six');
$b1 = 'S.S 2','S.S 3'
它返回$b1 = array($b1)
。
我在做什么错了?
答案 0 :(得分:0)
$ b1 ='S.S 2','S.S 3'//这就是语法错误
$ b1 = array($ b1)//您不能使用断字符串创建数组
您可以通过遍历$b1
数组并检查$b1
中是否有$a1
和{{ 1}}:
foreach
根据echmel的评论进行编辑:
使用in_array
的替代解决方案:
$a1 = array('J.S.S 1','J.S.S 2','J.S.S 3','S.S 1','S.S 2','S.S 3','Primary One','Primary Two','Primary Three','Primary Four','Primary Five','Primary Six');
$b1 = ['S.S 2','S.S 3'];
$found = false;
foreach($b1 as $b) {
if(in_array($b, $a1)) {
$found = true;
break;
}
}
var_dump($found);
答案 1 :(得分:0)
$a1 = [
'J.S.S 1',
'J.S.S 2',
'J.S.S 3',
'S.S 1',
'S.S 2',
'S.S 3',
];
$b1 = [
'S.S 2',
'S.S 3'
];
if (count(array_intersect($b1, $a1)) == count($b1)) {
echo "found";
}
else {
echo "not found";
}
这将检查是否在$b1
中找到 $a1
的所有元素。
如果您对部分匹配感到满意,则可以将支票更改为:
if (count(array_intersect($b1, $a1))) {
echo "found";
}
在后一种情况下,如果$b1
上仅存在$a1
的一个或多个元素,则会得到一个匹配项。
注意:在代码中尚不清楚$b1
最初是字符串还是数组。如果是字符串,则需要转换为数组。使用explode()
会很困难:
例如:
$b1 = explode(',', $b1);