在php和wordpress中合并并排序2个数组
我试图在PHP中合并两个数组,然后对它们进行排序 我正在从WordPress数据库标签和类别中提取数据,我需要将它们合并并正确排序 代码与此类似:在php和wordpress中合并并排序2个数组,php,arrays,wordpress,sorting,Php,Arrays,Wordpress,Sorting,我试图在PHP中合并两个数组,然后对它们进行排序 我正在从WordPress数据库标签和类别中提取数据,我需要将它们合并并正确排序 代码与此类似: $categories = [ '<a>WordPress Tips</a>', '<a>SEO Tips'</a>, '<a>Development Tips</a>' ]; $tags = [ '<a>WordPress</a&g
$categories = [
'<a>WordPress Tips</a>',
'<a>SEO Tips'</a>,
'<a>Development Tips</a>'
];
$tags = [
'<a>WordPress</a>',
'<a>SEO'</a>,
'<a>Development</a>'
];
$taxonomies = array_merge($categories, $tags);
sort($taxonomies);
由于我需要循环遍历$taxonomies数组,并使用包含的锚点打印它们,其中每一个锚点都必须有一个有效的指向自身的URL,所以我没有得到正确的排序结果。然而,只要我“去掉”这些项目周围的所有标记,排序就会正常工作,但我没有得到我需要的URL,只有字符串/文本
有没有人能建议一种更好的排序算法,它可以使用包含在它们周围的html元素对这些项目进行正确排序?谢谢 既然您提到标签剥离版本可以工作,一个简单的方法可能是将它们用作排序中的键。例如,类似这样的事情:
$taxonomies = array_merge( $categories, $tags );
$toSort = [];
foreach($taxonomies as $tax) {
$toSort[strip_tags($tax)] = $tax;
}
ksort( $toSort );
print_r( $toSort );
这将给出排序数组,您可以使用其中的值。也许有更好的选择,但我脑子里一下子就想起来了
编辑:在这里查看其他答案后,使用带有比较功能的uasort(实际比较剥离版本)可能会更好。您需要进行自定义比较,以便使用
输出:-Use?尝试过它,就像我尝试过所有其他本机PHP排序函数一样。不工作。然后添加您尝试的代码,以便我们可以帮助您修复它。usort/uasort似乎是这里的解决方案。是的,正是我在评论中所说的。此外,您还可以为cmp调用匿名函数,以避免与名称发生任何可能的冲突。@kneles90很高兴帮助您::抱歉,伙计,我不知道。再次非常感谢!谢谢,老兄,我用过这个数组,循环了一下,效果很好!尽管如此,我还是不知道为什么我的帖子上会出现所有的否决票:如果$categories和$tags中都有相同的项目,这个解决方案就会失败。我可以随时测试唯一性。类别和标记可能具有相同的名称,那么为什么要排除重复项呢?非常正确。出于某种原因,我把指数差排除在外了。谢谢
<?php
$taxonomies = array_merge($categories, $tags);
print_r($taxonomies);
function cmp($a, $b){
$data1 = strip_tags($a);
$data2 = strip_tags($b);
return ($data1 < $data2) ? -1 : 1;
}
usort($taxonomies, "cmp");
print_r($taxonomies);