2010-07-12 4 views
-1

il y a 10 variables. disons $var1, $var2, $var3, $var4,....$var10Pouvez-vous résoudre ceci en bref code?

et une variable $count. ce que je cherche est si toutes les variables sont fixées alors $count = 10+1 ou si 9 variables seulement placent alors $count=9+1 ou si 8 variables seulement fixent alors $count=8+1 et ainsi de suite jusqu'à 1 variable (pour une variable est placée alors $count = 1+1).

Je sais faire cela avec If, Else if et else mais j'ai besoin d'écrire trop de ligne de code.

Est-ce que quelqu'un sait comment faire cela en bref code ??

+0

Oui. Je sais comment faire ceci "en bref code". – Borealid

+0

Une raison pour les downvotes? La question est parfaitement claire et valide. –

+0

Je pense que parce que cela ressemble à des devoirs mi hermano –

Répondre

3

Essayez cette (non testé):

$arr = array($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10); 
$count = 1; 
foreach ($arr as $v) 
{ 
    if (isset($v)) 
     $count++; 
} 
+0

Mais où vérifiez-vous si ces variables sont définies ou non ?? – mathew

+0

Um 'isset ($ v)' est ma conjecture – PostMan

+0

@mathew: Voir l'appel à 'isSet'? – Borealid

2
<?php 
    ... 
$countarr = compact('var1', 'var2', ..., 'var10'); 
$count = count($countarr) + 1; 
?> 
11

Vous pouvez y parvenir en utilisant variable variables en PHP:

$count = 1; 
for ($i = 1; $i <= 10; $i++) 
{ 
    if (isset(${'var'.$i})) $count++; 
} 
+0

Wow, je n'avais aucune idée que n'importe quelle langue pouvait le faire. Intéressant – Falmarri

+2

Si je ne savais pas mieux, je considérerais cela plus comme un bug qu'une fonctionnalité. :) –

+0

@musicfreak: http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke/234170#234170 – Anax

0

Er ... Savez-vous que PHP permet d'utiliser des boucles. ..

<?php 

$var1 = 100; 
$var4 = 200; 
$var9 = 600; 

$count = 0; 
for($i=1; $i<=10; $i++){ 
    if(isset(${"var$i"})){ 
     $count++; 
    } 
} 

echo $count; 

?> 

... et les tableaux?

<?php 

$var = array(100, 200, 600); 
$count = count($var); 
echo $count; 

?> 

réponse aux remarques de Boreadlid

Vous devriez noter que MHS un élément de tableau n'est pas la même chose que lui à NULL. Ce code:

<?php 

$data = array(10, 20, 30); 
$data[1] = NULL; 
unset($data[0]); 
var_dump($data); 

?> 

...: imprime ce

array(2) { 
    [1]=> 
    NULL 
    [2]=> 
    int(30) 
} 

... donc count($data) imprime 2 car il est un tableau à deux éléments.

Tout ce que l'OP tente d'accomplir, il devrait probablement utiliser des tableaux où les valeurs inutilisées ne sont jamais définies pour commencer. L'approche $var1, $var2, $var3 fonctionnera mais ce n'est pas ce qu'un programmeur talentueux ferait. (Bien sûr, il n'y a rien de mal à être un débutant.)

+0

Je ne pense pas que 'count' fasse ce que vous pensez qu'il fait. – Borealid

+0

@Borealid: Il ne retourne donc pas le nombre d'éléments dans le tableau? –

+0

@Alvaro: il retourne le nombre d'éléments dans le tableau. Mais il inclura ceux qui sont 'NULL', ou' false'. Ou autrement "désactivé". – Borealid

0

oh c'mon ... vous pouvez faire un peu de réflexion (et la lecture de la documentation) vous-même.

Il suffit de prendre le code répondu à votre question précédente, et utiliser isset(${var+$i}, ${tvar+$i}) dans votre boucle

+0

bien, cette réponse semble maintenant hors de propos. C'est parce que cette question a été fusionnée avec une deuxième question (très similaire), à ​​laquelle cette réponse correspond parfaitement – knittl

-1

vous avez 20 vars (10x "var" et 10x "tvár"):

bool[] vars = new bool[10]; 
bool[] tvars = new bool[10]; 

i don » t obtenir votre partie +1 en $ count ... mais qu'en est-il:

int count = 1; //includes the always needed +1 part 
for(int i=0;i<10;i++) 
    if(vars[i] && tvars[i]) 
     count += i+1; //so 0 => 1 

??

+2

qui n'est pas un code php valide – Sarfraz

+1

cela fera: 1, 2, 4, 7, 11, ... (vous avez probablement voulu dire '$ count + = 1') et c'est php, pas C++;) – knittl

+0

désolé - j'ai raté le PHP-tag ... ... ou peut-être que je pensais que je vais répondre une question stupide avec une réponse stupide (la -4 sur la question durcisse mon point ici xD) SRY - ne poster sans craindre la réputation négative plus :) * OMG * - regard là-bas - s'il a fait un signe dollar en face de sa variable que le code pourrait même wor k ... le tuer pour ne pas avoir fait le signe du dollar! @ sAc & knittl: vous avez tous les deux eu un commentaire ++ de ma part :) – santa

Questions connexes