如何根据字符串在每个元素中的位置排序PHP数组
How to sort PHP array depending on the position of a string in each element?
在JavaScript中,可以根据字符串在每个元素中的位置对数组进行排序,使用如下内容:
arr = arr.sort(function (a, b) {
return a.indexOf(str) - b.indexOf(str);
});
可以做一个类似的事情PHP数组,使其排序取决于字符串在每个元素的位置?
我希望这对将要来的人有帮助。我建议改进@DannyPhantom的答案。
任何不包含搜索字符串的值都将放在首位。当没有找到搜索字符串时,strpos
返回false
,因此需要处理,因为我们都(应该)知道,false == 0
和strpos()
在开始时找到搜索字符串时返回0。
正如PHPDoc所说的
此函数可能返回布尔值FALSE,但也可能返回a非布尔值,计算结果为FALSE。请阅读关于布尔值获取更多信息。使用===操作符来测试返回该函数的值。
那么,这就是我的解决方案
usort($arr, function($a, $b) use ($str) {
$idx_a = strpos($a, $str) === false ? PHP_INT_MAX : strpos($a, $str);
$idx_b = strpos($b, $str) === false ? PHP_INT_MAX : strpos($b, $str);
return $idx_a - $idx_b;
});
是的,您将不得不使用ussort和strpos做几乎相同的事情。匿名函数也可以。
usort($arr, function($a, $b) use ($str) {return strpos($a, $str) - strpos($b, $str)}) //code is not tested, though should work
$str
是你正在搜索的字符串,$arr
是你的数组
注意:use
只能在PHP 5.3+
相关文章:
- 根据另一个数组对数组进行排序,包括位置和字符串[ES6]
- 使用地理坐标,对更靠近用户的对象进行排序'的位置
- 如何在知道行位置的情况下对表进行排序
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- 在MongoDB中排序后获取对象的位置
- TableSorter:如何更改排序箭头的位置
- 根据angularjs中画布上的位置对列表项进行排序
- 对jQuery UI可排序表应用包含可以防止将高行移动到最后一个位置
- Javascript排序函数错误地更改了元素'数组中的位置
- JavaScript - 按位置对对象进行排序(左,上)
- 对对象数组重新排序,以便数组的每个位置都有一个特定的键/值对
- 动态 jquery ui 可排序块的索引/位置
- 在使用可排序排序期间/之后显示使用 JSON 创建的列表中的项目位置
- 按组分组数组并按位置排序
- 是否存在一种数据结构,具有高效的插入/删除,但具有位置排序
- 如何根据字符串在每个元素中的位置排序PHP数组
- 按位置排序数据库行
- 如何使用Lodash在数字数组的数组中按位置排序
- JavaScript数组CSV解析以及按位置排序和重新排序
- 如何合并javascript数组并按位置排序