Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php和wordpress中合并并排序2个数组_Php_Arrays_Wordpress_Sorting - Fatal编程技术网

在php和wordpress中合并并排序2个数组

在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

我试图在PHP中合并两个数组,然后对它们进行排序

我正在从WordPress数据库标签和类别中提取数据,我需要将它们合并并正确排序

代码与此类似:

$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);