在php&中合并然后排序2个数组WordPress的

时间:2018-01-12 11:16:14

标签: php arrays wordpress sorting

我正在尝试在PHP中合并2个数组,然后对它们进行排序。

我从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元素正确排序这些项目吗?谢谢!

2 个答案:

答案 0 :(得分:2)

由于您提到标签剥离版本有效,因此一种简单的方法可能是将它们用作排序中的键。像这样的东西,例如:

$taxonomies = array_merge( $categories, $tags );
$toSort = [];
foreach($taxonomies as $tax) {
  $toSort[strip_tags($tax)] = $tax;
}

ksort( $toSort );
print_r( $toSort );

这将给出排序的数组,你可以只使用那里的值。也许有更好的选择,但这让我想起了我的头脑..

编辑:带有比较功能的uasort实际上比较了剥离版本可能会更好,在这里查看其他答案后。

答案 1 :(得分:2)

您需要使用usort()strip_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);

输出: - https://eval.in/934071