2012-12-30 4 views
-4

Je souhaite une variable contenant une instruction if, dans WordPress, mais je n'arrive pas à l'obtenir.Exécution d'une instruction if dans une variable

Voici mon code:

<?php $priceperpost= { 
    if ($linecount > 15) 
{ 
    echo "109"; 
} 
elseif ($linecount > 30) { 
    echo "89"; 
} 
elseif ($linecount > 100) { 
    echo "Please Call"; 
} 
else { 
    echo "129"; 
} 
} 
?> 
+2

Si la 'linecount' de $ est> 100, il ne sera jamais atteindre la ligne' echo' car il est déjà frappé le premier 'if'. – PeeHaa

+0

Et vous ne pouvez pas affecter de blocs de code à des variables. Vous devez lire des déclarations et des expressions. – mario

+0

Toute chose supérieure à 100 est également supérieure à 15 et 30! commander dans l'ordre décroissant. –

Répondre

2

Voici un exemple de la façon de faire une ligne si les déclarations; vous devrez les imbriquer pour obtenir l'effet que vous voulez. En gros, dans ce code, si x est égal à 1, puis $ la valeur se voit attribuer la valeur 2. Sinon, il obtient la valeur 3.

$x = 1; 
$value = ($x == 1 ? 2 : 3); 
echo $value; 

Sorties: 2

Il est équivalent à:

$x = 1; 
if ($x == 1) { 
    $value = 2; 
} else { 
    $value = 3; 
} 
echo $value; 
+4

Les instructions imbriquées avec les opérateurs ternaires ne sont pas vraiment une très bonne idée en matière de lisibilité. – PeeHaa

2

En supposant que vous essayez d'attribuer cette valeur plutôt que la sortie directement sur l'écran:

<?php 
    $priceperpost = "129"; // default 
    if ($linecount > 100) { 
    $priceperpost = "Please call"; // highest price break value first 
    } elseif ($linecount > 30) { 
    $priceperpost = "89"; 
    } elseif ($linecount > 15) { 
    $priceperpost = "109"; // lowest price break value last 
    } 
?> 

Ou quelque chose d'un peu plus compact et flexible - vous pouvez stocker les valeurs dans un fichier ou databse et générer le tableau de ces données plutôt que d'avoir à écrire une nouvelle elseif pour les nouvelles valeurs de rupture de prix:

<?php 
    $priceArray = array(// insert price break values in descending order 
    100 => "Please call", 
    30 => "89", 
    15 => "109", 
    0 => "129", 
); 

    foreach ($priceArray as $breakValue => $price) { 
    if ($linecount > $breakValue) { 
     $priceperpost = $price; 
     break; // found the price break, so we can exit the loop here 
    } 
    } 
?> 
1

Je voudrais faire quelque chose comme ce qui suit, car comme il est dit que votre première if ou votre else sera frappé dans l'exemple que vous avez fourni:

switch (true) { 
    case $linecount > 100: 
     $priceperpost = "Please Call"; 
     break; 

    case $linecount > 30: 
     $priceperpost = 89; 
     break; 

    case $linecount > 15: 
     $priceperpost = 109; 
     break; 

    default: 
     $priceperpost = 129; 
     break; 
} 

en général, quand il y aura plus elseif s il a tendance à être un peu difficile à lire. Dans ces cas, je préfère souvent une déclaration switch pour la lisibilité (mais les opinions semblent différer à ce sujet).

Démo: http://codepad.viper-7.com/UnztIT

+0

Merci beaucoup, votre exemple fonctionne parfaitement pour moi :-) –

Questions connexes