Var ne göre birden değerlerden birini atama

5 Cevap php

Ben hangi birine dayalı $ myVar $ var1 değeri $ var2'ye, ya $ değ3, atamak isterseniz Perl, evaluates to true, ben aşağıdaki kod olacaktır:

$myVar = $var1 || $var2 || $var3;

Python ve PHP hem de ayrı bir proje üzerinde çalışıyorum, ve ben de dil olarak kısaca bu durumu kodu nasıl çözemedim.

Python bu kod en iyi yolu nedir?

PHP bu kodu en iyi yolu nedir?

5 Cevap

İlk başvuru üzerine Perl 'autovivifies' değişkenler (hatırladığım kadarıyla). Bir değişken yoksa Python bir NameError çıkaracağız. Ancak, böyle bir şey yapabilirsiniz.

var1 = var2 = var3 = None
# code that might change the value of three variables mentioned above
myvar = var1 or var2 or var3

Genel olarak, bir değişken tanımlanmış olmadığını denetleme (ve buna göre kontrol akışını değiştirerek) Python kötü bir şeydir. Sen bir sözlük ve tuşlarını kullanmalısınız.

Python, ben size söyleyebilirim inanıyorum

myVar = var1 or var2 or var3

Python belgeleri x or y olarak tanımlıyor

x yanlış ise, o zaman y else x

Edit: theatrus ilginç bir noktaya getirir - Ben bile değişkenleri tanımlı olmayabilir o kabul etmemişti. Ben bu konuda tartışma bulundu:

Python doesn't have a specific function to test whether a variable is defined, since all variables are expected to have been defined before use - even if initially just assigned the None object. Attempting to access a variable that hasn't previously been defined will raise an exception.

It is generally considered unusual in Python not to know whether a variable has already been defined. But if you are nevertheless in this situation, you can make sure that a given variable is in fact defined (as None, if nothing else) by attempting to access it inside a 'try' block and assigning it the None object should it raise a NameError exception.

Eğer değişkenler var, ve varlığı ve truthiness hem tek kontrol etmek istediğiniz garanti değilseniz Yani, bazı dağınık kod için de olabilir.

PHP, size, isset() to test to see if the variable is set and not null. To achieve what you are looking for you can check whether $var1 kullanabilirsiniz $var2 veya $var3 ayarlanır, ve sonra {[(4)] değerini ayarlayın }

Ama, bu doğru değerlendirmeniz için $myVar ayarlamak istediğiniz hangi durumuna bağlı dikkat:

$str = '';
var_dump(isset($str)); // TRUE

PHP Eğer (varsayar değişkenleri ayarlanır) bu yapabilirdi:

$vars = array($var1, $var2, $var3);
foreach ($vars as $var) {
    if ($myvar = $var) {
        break;
    }
}

Ya :) biraz daha perly yapmak için:

foreach(array($var1,$var2,$var3)as$var)if($myvar=$var)break;

Python Python 2.5 eklendi conditional expressions da vardır:

x = true_value if condition else false_value

Ben PHP için konuşamıyor.

Her iki dilde birlikte akılda tutulması gereken bir şey var olmayan bir değişkeni değerlendirmek çalışırken her zaman bir hata atmak için gidiyor olmasıdır. Bu girişimi ve varsayılan bir çare eğer Python ile, oluşacak NameError istisna yakalama bu işe yarayabilir:

>>> try: 
...     myVar = var1 or var2 or var3
... except NameError:
...     myVar = 'default'
... 
>>> myVar
'default'

Yani var1, var2, ya da var3 ya ayarlı değilse, o zaman myVar "varsayılan" geri dönüş değerini alacaktır eğer. Aksi takdirde, True değerlendirilir dizi hangisi değişkenin değerini alırsınız.