2016-07-07 14 views
0

„Hallo Everybody“ in der ersten Note von PHP-Handbuch: splheap Klasse gibt es beispielsweise kann ich nicht die Linie der Rückkehr versteht in vergleichen() Funktion von splheap UnterklasseRückgabewert in vergleichen() Funktion von SplHeap Klasse

der Linie kann ich verstehen nicht

return $values1[0] < $values2[0] ? -1 : 1; 

das Beispiel:

To have a good idea what you can do with SplHeap, I created a little example script that will show the rankings of Belgian soccer 
<?php 
/** 
* A class that extends SplHeap for showing rankings in the Belgian 
* soccer tournament JupilerLeague 
*/ 
class JupilerLeague extends SplHeap 
{ 
    /** 
    * We modify the abstract method compare so we can sort our 
    * rankings using the values of a given array 
    */ 
    public function compare($array1, $array2) 
    { 
     $values1 = array_values($array1); 
     $values2 = array_values($array2); 
     if ($values1[0] === $values2[0]) return 0; 
     return $values1[0] < $values2[0] ? -1 : 1; 
    } 
} 

// Let's populate our heap here (data of 2009) 
$heap = new JupilerLeague(); 
$heap->insert(array ('AA Gent' => 15)); 
$heap->insert(array ('Anderlecht' => 20)); 
$heap->insert(array ('Cercle Brugge' => 11)); 
$heap->insert(array ('Charleroi' => 12)); 
$heap->insert(array ('Club Brugge' => 21)); 
$heap->insert(array ('G. Beerschot' => 15)); 
$heap->insert(array ('Kortrijk' => 10)); 
$heap->insert(array ('KV Mechelen' => 18)); 
$heap->insert(array ('Lokeren' => 10)); 
$heap->insert(array ('Moeskroen' => 7)); 
$heap->insert(array ('Racing Genk' => 11)); 
$heap->insert(array ('Roeselare' => 6)); 
$heap->insert(array ('Standard' => 20)); 
$heap->insert(array ('STVV' => 17)); 
$heap->insert(array ('Westerlo' => 10)); 
$heap->insert(array ('Zulte Waregem' => 15)); 

Können Sie mir bitte helfen, diese Zeile zu verstehen?

Antwort

0

Es ist eine ternary Aussage. Es bedeutet:

if ($values1[0] < $values2[0]) { 
    return -1; 
} else { 
    return 1; 
} 

Der ternäre Operator nicht spezifisch für SplHeap ist. Es ist nur ein allgemeiner PHP-Operator.

0

Es ist ein bedingter ternay Operator ? (ein ternärer if).

Wie funktioniert es ?:

In Computer-Programmierung, ?: ist ein ternärer Operator, den Teil der Syntax für einen grundlegenden bedingten Ausdruck in mehrere Programmierung Sprachen ist. Es wird allgemein als der bedingte Operator inline if (iif) oder ternär if bezeichnet.

Es stammt ursprünglich aus CPL, in dem die entsprechende Syntax für e1 ? e2 : e3 war e1 → e2, e3.

Obwohl viele ternäre Operatoren möglich sind, ist der bedingte Operator so häufig und andere ternäre Operatoren so selten, dass der bedingte Operator allgemein als ternärer Operator bezeichnet wird.

Quelle: Wikipedia

Zum Beispiel mit Code:

return $values1[0] < $values2[0] ? -1 : 1; 

Es ist ähnlich zu sagen:

if($values1[0] < $values2[0]){ 
    return -1; 
} 
else{ 
    return 1; 
} 

Die ? arbeitet als then und die : Werke als else

Verwandte Themen