2015-07-04 5 views
2

Я пытаюсь использовать цикл foreach для печати ссылок, которые сортируются по одной из трех переменных в массиве, $term->description. Значение $term->name - это текст внутри элемента ссылки. Как я могу добавить атрибут href к ссылке, используя третью переменную $term->slug в том же цикле foreach? Я попытался сделать два отдельных массива и использовать array_combine, но безрезультатно.Php foreach сортировка с тремя переменными

Вот код, работающий для двух переменных. Чтобы все было ясно, я просто добавил $term->slug в нужное место.

$terms = wp_get_object_terms($post->ID, $taxonomy); 
$a = array(); 
foreach ($terms as $term) : 
    $a[] = array($term->name, $term->description, $term->slug); 
endforeach; 


// print_r($a); 
// Array ([0] => Array ([0] => Los Angeles [1] => City [2] => los-angeles) [1] => Array ([0] => San Francisco [1] => City [2] => san-francisco) [2] => Array ([0] => San Diego [1] => City [2] => san-diego) [3] => Array ([0] => United States [1] => Country [2] => united-states)) 

foreach ($a as $key => $value) { 
    $return[$value[1]][] = $value[0]; 
} 

foreach ($return as $key => $value) { 
    echo $key.": <span class='tags'><a href='$term->slug'>".implode('</a></span>,<span class="tags"><a href="$term->slug">', $value)."</a></span>"; 
} 

// Outputs: 
// City: Los Angeles San Fransisco San Diego 
// Country: United States 
+0

Можете ли вы дать мне желаемый результат HTML. $ term-> slug не работает, поскольку $ term находится в первом цикле foreach. –

ответ

1

Код:

<?php 
    error_reporting('E_ALL'); 

    $a = Array(Array("Los Angeles","City","los-angeles"),Array("San Francisco","City","san-francisco"),Array("San Diego","City","san-diego"),Array("United States","Country","united-states")); 

    foreach ($a as $key => $value) { 
     $return[$value[1]][] = array("name"=>$value[0],"slug"=>$value[2]); 
    } 


    foreach ($return as $key => $value) { 
    echo $key.":"; 
     foreach($value as $newvalue){ 
     echo '<span class="tags"><a href="'.$newvalue["slug"].'">'.$newvalue["name"].'</a>&nbsp;</span>'; 
    } 
    echo "<br>"; 
    } 

Выход:

City:<span class="tags"></span><a href="los-angeles">Los Angeles</a>&nbsp;<span class="tags"></span><a href="san-francisco">San Francisco</a>&nbsp;<span class="tags"></span><a href="san-diego">San Diego</a>&nbsp;<br>Country:<span class="tags"></span><a href="united-states">United States</a>&nbsp;<br> 
+0

Отличный ответ. Мне не приходило в голову, что прямолинейно было вложить еще одну петлю foreach внутри первой. Большое спасибо! –

+0

Рад помочь всегда. –

Смежные вопросы