[英]Array Reverse and sorting is possible?
我想在反向數組后按字母順序對名稱進行排序。
這是用於以正確的順序排序姓氏/名字的代碼。 一些錯誤(例如,帶有中間名的名稱),但除排序外,它仍然有效。
這是代碼:
<?php
$terms = get_terms( 'pa_artist' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
echo '<ul class="artists">';
foreach ( $terms as $term ) {
$array = explode(" ", $term->name);
if ($array[3]) {
$array[3] = strtoupper($array[3]);
$array[3] = "<strong>".$array[3]."</strong>";
}
elseif ($array[2]) {
$array[2] = strtoupper($array[2]);
$array[2] = "<strong>".$array[2]."</strong>";
} elseif ($array[1]) {
$array[1] = strtoupper($array[1]);
$array[1] = "<strong>".$array[1]."</strong>";
} else {
$array[0] = strtoupper($array[0]);
$array[0] = "<strong>".$array[0]."</strong>";
}
$rarray = array_reverse($array);
sort($rarray);
echo '<li><a href="' .get_term_link( $term ). '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . implode(" ", $rarray) . '</a></li>';
}
echo '</ul>';
}
現在,名稱的排序就像從未進行過相反的操作一樣。
一些示例,起初顯示如下:
Auguste Renoir
Pablo Picasso
Paul Gauguin
在反向和If字符串之后,是這樣的:
RENOIR Auguste
PICASSO Pablo
GAUGUIN Paul
當我需要它時:
GAUGUIN Paul
PICASSO Pablo
RENOIR Auguste
我嘗試了各種排序功能,無法使其正常工作……我找不到在反向數組之后進行排序的方法,甚至可能嗎?
它用於在wordpress / woocommerce上使用屬性構建的名稱列表。
如果我正確理解-可以像這樣簡單地完成:
$artists = array(
array('Auguste', '', 'Renoir'),
array('Pablo', '', 'Picasso'),
array('Paul', '', 'Gauguin'),
);
usort($artists, function($a, $b) {
return strcasecmp($a[2], $b[2]);
});
// print_r($artists);
您需要將每個藝術家陣列放入一個更大的陣列中,然后進行排序:
<?php
$terms = get_terms( 'pa_artist' );
$artists = array();
foreach ( $terms as $term ) {
$array = explode(" ", $term->name);
if ($array[3]) {
$array[3] = strtoupper($array[3]);
$array[3] = "<strong>".$array[3]."</strong>";
}
elseif ($array[2]) {
$array[2] = strtoupper($array[2]);
$array[2] = "<strong>".$array[2]."</strong>";
} elseif ($array[1]) {
$array[1] = strtoupper($array[1]);
$array[1] = "<strong>".$array[1]."</strong>";
} else {
$array[0] = strtoupper($array[0]);
$array[0] = "<strong>".$array[0]."</strong>";
}
$rarray = array_reverse($array);
$artists[] = $rarray;
}
usort($artists, function($a, $b) {
return strcasecmp($a[2], $b[2]);
});
// now run your foreach loop again to output the markup you want...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.