2016-11-20 2 views
0

Ich möchte dynamisch die folgende html erreichen:Wie können verschiedene Arrays eingestellt werden, die unterschiedliche Wertebereiche betreffen?

Zeitraum AD:

<ul> 
    <li>1200</li> 
    <li>1300 
    <ul> 
     <li>1301</li> 
    </ul> 
    <li> 
</ul> 

Zeitraum BC:

<ul> 
    <li>-200</li> 
    <li>-450 
    <ul> 
     <li>-451</li> 
    </ul> 
    </li> 
</ul> 

Im folgenden ich ein Array festgelegt haben, so Das kann ich, indem ich einige benutzerdefinierte Felder verwende, meine Daten in das Array schieben und dann den ganzen Code in 100 Jahren berechnen lassen, um es können zu können Jahre wie 1301 als verschachtelte ul unter 1300 zu platzieren.

  <ul> 
      <?php 
       $yearsArray = []; 
       $centuryHash = []; 
       query_posts(array( 
        'post_type' => 'post', 
        'posts_per_page' => -1 
       )); 
       while (have_posts()) : the_post(); 
        array_push($yearsArray, get_field("year")); 
        if (($wp_query->current_post +1) == ($wp_query->post_count)) { 
         $yearsArray = array_unique($yearsArray); 
         sort($yearsArray); 
        } 
       endwhile; 
       foreach ($yearsArray as $year) { 

        $currentCentury = floor($year/100)*100; 

        if(!$centuryHash[$currentCentury]){ 
         $centuryHash[$currentCentury] = []; 
        } 

        if($currentCentury != $year){ 
         $centuryHash[$currentCentury][] = $year; 
        } 
       } 
       foreach ($centuryHash as $century => $centuryYears) { ?> 
        <li class="dropdown"> 
         <?php if($centuryYears){ ?> 
          <a class="btn btn-default" href="#" class="dropdown-toggle" data-date="<?php echo $century; ?>" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 
           <?php echo $century; ?> 
           <span class='caret'></span> 
          </a> 
          <ul class='dropdown-menu'> 
           <?php foreach ($centuryYears as $year) { ?> 
            <li> 
             <a class="btn btn-default" data-date="<?php echo $year; ?>" href="#"> 
              <?php echo $year; ?> 
             </a> 
            </li> 
           <?php } 
          echo "</ul>"; 
         } else { ?> 
          <a class="btn btn-default" data-date="<?php echo $century; ?>" href="#"> 
           <?php echo $century; ?> 
          </a>  
         <?php } ?> 
        </li> 
       <?php } 
      ?> 
     </ul> 

Das Problem, das ich nicht herausfinden kann, ist, wie ich wie (verbal Code) sagen kann:

Wenn der Wert im Bereich von -450 bis 2 dann in diesen Array geht sonst geht in diesem Array statt

Von meinem Ende ich in dem cms einstellen könnte (Menschen werden in der Lage sein, Inhalte mit Daten einfügen) einige Flags, so dass ich wie (verbal Code) einfache Bedingungen tun kann:

"Ist dieses Datum von a oder b? dann dies oder jenes tun“

Aber das schafft ein Problem, weil ich konnte eine Zeit-Flag und das falsche Datum in der falschen Zeit setzen.

Deshalb ist die letzte Lösung, die ich dachte, ist zu setze einen Bereich von Zeitabschnitten und begrenze einige Felder, indem ich verschiedene erzeuge, wo ich die Werte abhängig von ihren Werten dynamisch drücken könnte

Dies könnte ein Start sein vielleicht (example from docs)? Aber wie kann ich einen if zu steuern was geht dort hin oder nicht?

foreach (range(0, 12) as $number) { 
    echo $number; 
} 

Antwort

2

Hier ist eine einfache Antwort auf Ihre Frage.

Wenn der Wert im Bereich von -450 bis 2 ist dann diesen Array geht in sonst in diesem Array geht, statt

if ($value >= -450 && $value <= 2) { 
    // do this 
} else { 
    // do that 
} 

Hoffnung, diese Antworten auf Ihre Frage (was, leider überladen mit Dutzenden von Codes, die für die Frage nicht gelten).

+0

Danke, das macht Sinn und es ist eigentlich ganz einfach, vielleicht war ich nur mit dem ganzen obigen Code überlastet. –

Verwandte Themen