很确定我的代码即将运行,但我遇到了一些困难。我使用的是Wordpress,它在第一个foreach循环中有一些函数来抓取当前用户编写的页面,但我知道这部分是有效的。我的重点是第二个循环,它旨在创建一个由唯一值(页面类别)组成的数组。
以前在这里直接回复用户时遇到过问题(计算机太旧,无法更新浏览器),所以提前感谢您的帮助!
$args= array('sort_column' => 'post_date', 'sort_order' => 'desc', 'authors' => $current_user -> user_login;
$pages = get_pages($args);
$uniques = array();
foreach ($pages as $page) {
$categories = get_the_category($page->ID);
foreach ($uniques as $unique) {
if ( in_array($categories[0]->name, $unique) )
{
continue;
}
array_push($unique, $categories[0]->name);
echo end($unique[0]);
echo '<br>';
echo $categories[0]->name;
}
}
您的foreach ($uniques as $unique) {
行出现问题。该循环将永远不会执行,因为$uniques
总是空的。
已解决,感谢您的帮助!
$uniques = array ();
foreach ($pages as $page) {
$categories = get_the_category ($page->ID);
foreach ($categories as $category) {
if ( ! in_array ($uniques, $category->name) ) {
$uniques [] = $category->name;
}
}
foreach ($uniques as $unique) {
if (in_array ($categories [0]->name, $unique)) {
continue;
}
}
}
我认为您希望获得数组$uniques
中类别的所有唯一值是正确的,而$categories[0]->name
正在为您获取类别名称。
然后尝试使用php的array_unique()
函数,然后可以使用array_values()
对索引进行排序。
<?php
$args= array('sort_column' => 'post_date', 'sort_order' => 'desc', 'authors' => $current_user -> user_login;
$pages = get_pages($args);
$uniques = array();
foreach ($pages as $page) {
$categories = get_the_category($page->ID);
$uniques[] = $categories[0]->name;
}
$uniques_arr = array_unique($uniques);
print_r($uniques_arr);
$uniques_sorted = array_values($uniques);
print_r($uniques_sorted);
?>
这将只为您提供所有页面中的第一个类别,因为我们只插入0索引。要获得所有页面的所有类别,请使用以下代码
<?php
$args= array('sort_column' => 'post_date', 'sort_order' => 'desc', 'authors' => $current_user -> user_login;
$pages = get_pages($args);
$uniques = array();
foreach ($pages as $page) {
$categories = get_the_category($page->ID);
foreach ($categories as $category) {
$uniques[] = $category->name;
}
}
$uniques_arr = array_unique($uniques);
print_r($uniques_arr);
$uniques_sorted = array_values($uniques);
print_r($uniques_sorted);
?>