我有一个如下所示的数组:
[Amsterdam, Elderly people, Thousand students, Sixteen thousand students, Clean houses]
如您所见,有一个条目“thousand students
”和一个条目“sixteen thousand students
”。有没有办法让我过滤掉thousand students
(并删除此条目),因为它已经部分存在了?
然而,手动取消设置元素将无法正常工作。该数组是API的结果,这意味着我不知道是否存在部分重复。
感谢。
编辑:预期结果:
[Amsterdam, Elderly people, Sixteen thousand students, Clean houses]
答案 0 :(得分:2)
所以我试图在没有两个循环的情况下找到一个更流畅的方式,但是这样做会:
foreach($array as $k => $a) {
foreach($array as $b) {
if(strtolower($a) !== strtolower($b) &&
(strpos(strtolower($b), strtolower($a)) !== false)) {
unset($array[$k]);
}
}
}
可能有点短:
foreach(array_map('strtolower', $array) as $k => $a) {
foreach(array_map('strtolower', $array) as $b) {
if($a !== $b && (strpos($b, $a) !== false)) {
unset($array[$k]);
}
}
}
答案 1 :(得分:0)
试试这个:
qreal screenDpi = QApplication::desktop()->physicalDpiX() / 72.;
答案 2 :(得分:0)
这应该可以解决问题,但它只会在单词级别查找匹配项,并且区分大小写。
<?php
$wordsList = [
'Amsterdam', 'Elderly people', 'Thousand students',
'Sixteen thousand students', 'Clean houses',
];
$lookup = array();
foreach ($wordsList as $k => $words) {
$phrase = '';
foreach (preg_split('`\s+`', $words, -1, PREG_SPLIT_NO_EMPTY) as $word) {
$phrase .= $word;
if (in_array($phrase, $words)) {
unset($wordsList[$k]);
break;
}
}
}