2016-03-22 6 views
1

Ziemlich sicher, dass mein Code in der Nähe zu arbeiten ist, aber ich habe einige Schwierigkeiten. Ich benutze Wordpress, das einige Funktionen in der ersten foreach-Schleife hat, um die Seiten zu holen, die der aktuelle Benutzer erstellt hat, aber ich weiß, dass dieser Teil funktioniert. Mein Fokus liegt auf der zweiten Schleife, die ein Array aus eindeutigen Werten (Seitenkategorien) erstellen soll.PHP: Erstellen einer Liste von eindeutigen Werten mit verschachtelten foreach-Schleifen

Hatten Sie Probleme auf Benutzer direkt hier zuvor zu reagieren (Computer zu alt, um den Browser zu aktualisieren), also danke im Voraus für die Hilfe!

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

Antwort

0

Sie haben ein Problem mit Ihrer foreach ($uniques as $unique) { Linie. Diese Schleife wird niemals ausgeführt, da $uniques immer leer ist.

0

Gelöst, danke für Ihre Hilfe!

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

}

0

Ich bin immer richtig, dass Sie alle eindeutigen Werte der Kategorien im Array erhalten möchten $uniques und $categories[0]->name wird den Kategorienamen für Sie holen.

Dann versuchen Sie mit der array_unique() Funktion von PHP dann können Sie array_values() verwenden, um die Indizes zu sortieren.

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

Dadurch erhalten Sie nur die erste Kategorie von allen Seiten, da wir nur 0 Index einfügen. Um alle Kategorien aller Seiten zu erhalten, verwenden Sie den folgenden Code

<?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); 
?> 
Verwandte Themen