Nasıl bir geçiş durumunda olan bir OR açıklama yapardı?

2 Cevap php

Nasıl eğer bu ifadeyi dönüştürme hakkında gitmek istiyorum:

for($i = 1; $i < $argc; $i++)
{
    ...
    if(in_array($argv[$i], array('-V', '--version')))
    {
        $displayVersion = TRUE;
    }
    ...
}

Bir anahtarı kasanın içine without iki switch ifadeleri yazmak gerek?

2 Cevap

Aşağıdaki gibi doğrudan bir çeviri olacaktır:

switch(in_array($argv[$i], array('-V', '--version'))){
    case true:
        $displayVersion = TRUE; break;
}

Ancak aynı zamanda nettir böyle bir şey, yapabilirdi.

switch($argv[$i]){
    case '-V':
    case '--version':
        $displayVersion = TRUE; break;
}

O in_array($argv[$i], array('-V', '--version')) false ise değişken ayarlamak false olacağı yukarıdaki koddan farklı olmasına rağmen, yapmak istediğiniz ne bağlı olarak, bir astar, daha açık olabilir. Değişken adı verilen bu kötü bir şey olduğunu sanmıyorum.

$displayVersion = in_array($argv[$i], array('-V', '--version'));

Bu sabitleme ek olarak, kısa ve uzun formatları hem de komut satırı değişkenlerini işlemek için bir fonksiyon PHP getopt komutu, bakmak isteyebilirsiniz.

Düzenleme: Aslında burada bir kod bloğu var

$options = getopt('V', array('version'));

if ($options['V'] || $options['version']) {
    $displayVersion = TRUE;
}

Windows üzerinde bu iş için PHP 5.3 gerektiğini unutmayın.