2017-02-17 1 views
-3

Je veux désactiver la valeur pour certaines conditions. si je suis utilisé mot-clé non défini à travers une erreur.please tout un m'aider dans ce cas.comment utiliser l'opérateur non défini dans ternary en utilisant php

$reportHeader = array("name" => !empty($name) ? "Name" : "0", 
    "number" => !empty($number) ? "Number" : "0"); 

Dans ce cas, j'imprimer le nom et le numéro est présent sinon présent je reviens 0.but i pas besoin d'imprimer 0.if condition défaille i besoin de désinitialiser la valeur. Je essayé comme ceci:.

$reportHeader = array("name" => !empty($name) ? "Name" : unset(), 
     "number" => !empty($number) ? "Number" : unset(); 

Mais par une erreur

+0

Que vous essayez de désinitialiser? Vous n'avez pas dit à PHP quel tableau ou index vous voulez supprimer. – drmonkeyninja

+0

je veux supprimer l'index dans le tableau –

Répondre

2

Vous ne pouvez pas utiliser unset() comme ça, il attend une variable à passer à à unset (voir le PHP documentation remplir votre lieu tableau avec null valeurs dont la valeur n'a pas été réglée et utilisez array_filter pour supprimer les index que vous ne voulez pas.

$reportHeader = array(
    "name" => !empty($name) ? "Name" : null, 
    "number" => !empty($number) ? "Number" : null 
); 
// Now remove the 'unset' values 
$reportHeader = array_filter($reportHeader); 
+0

Oui cela fonctionne, mais parfois $ name peut retourner "" (valeur nulle) il retourner nous voulons les imprimer.but array_filter supprimer le "" aussi –

+0

@RaghulRajendran vous devez peut-être utiliser ' isset() 'plutôt que'! empty() 'dans ce cas. – drmonkeyninja

0

unset() a besoin d'un ou plusieurs arg ments. Donc, si vous avez activé le rapport d'erreurs et vérifié la documentation de cette fonction, vous le verrez vous-même. Alors la question est, qu'est-ce que vous essayez de désarmer exactement?

Vous devez retourner quelque chose comme la valeur de votre tableau, ne pas avoir unset() devenir la valeur (comme vous essayez actuellement). Si vous avez l'intention d'ajouter que l'élément si la valeur est vide, vous pouvez le faire

$reportHeader = array(); 
!empty($name) ? $reportHeader['name'] = "Name" : null; 
!empty($number) ? $reportHeader['number'] = "Number" : null; 

Cela ajoute que des valeurs à votre tableau si elles ne sont pas vides.

Cependant, un if standard le fait aussi très bien, simplement parce que peut être écrit en tant qu'opérateur ternaire, cela ne veut pas dire qu'il le devrait.

if (!empty($name)) 
    $reportHeader['name'] = "Name"; 
0

Vous pouvez simplement utiliser le code folowing

!empty($name) ? $reportHeader["name"] = "Name" : ""; 
!empty($number) ? $reportHeader["number"] = "Number" : "";