2016-03-22 9 views
1

私のコードは動作していますが、少し難しそうです。私は現在のユーザーが作成したページを取得するために最初のforeachループでいくつかの機能を持っているWordpressを使用していますが、その部分が動作することはわかっています。私の焦点は、ユニークな値(ページカテゴリ)で構成される配列を作成するための第2のループです。PHP:ネストされた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; 
    } 
} 

答えて

0

foreach ($uniques as $unique) {に問題があります。 $uniquesは常に空ですので、ループは実行されません。

0

解決済み、ありがとうございます!

$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

私はあなたが、配列$uniques$categories[0]->nameのカテゴリのすべての一意の値を取得したいことを正しく取得していますあなたのためのカテゴリ名をフェッチしています。

次に、array_unique() phpの機能を試してみてください。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); 
?> 
関連する問題