Değişken yaklaşım dönmek

4 Cevap php

Tamam ben on değişkenleri var ama bir ayarlamak gerekiyor, ama ben bir ayarlanana kadar her değerleri kontrol etmeniz gerekir. Ben bir ANAHTARI / CASE deyimi yapıyorum ama ben dizi gerekir sadece değişken dönebilirsiniz nasıl görmüyorum, çünkü bu en iyi yaklaşım olup olmadığından emin değilim.

$passed_var = 'A'; // Static

$var_array = getSelectedVar($passed_var);

foreach($var_array as $key => $val) {
    echo "Key: " . $key . " VALUE: " . $val . "<br />\n";
}

// How do I assign one of these values?
if(isset($var_1)) {
    echo "Var 1 Set<br />\n";
} elseif(isset($var_2)) {
    echo "Var 2 Set<br />\n";
} elseif(isset($var_3)) {
    echo "Var 3 Set<br />\n";
} elseif(isset($var_4)) {
    echo "Var 4 Set<br />\n";
} elseif(isset($var_5)) {
    echo "Var 5 Set<br />\n";
} elseif(isset($var_6)) {
    echo "Var 6 Set<br />\n";
} elseif(isset($var_7)) {
    echo "Var 7 Set<br />\n";
} elseif(isset($var_8)) {
    echo "Var 8 Set<br />\n";
} elseif(isset($var_9)) {
    echo "Var 9 Set<br />\n";
} elseif(isset($var_10)) {
    echo "Var 10 Set<br />\n";
}

function getSelectedVar($passed_var) {
    $passed_var = strtoupper($passed_var);
    $update_var = array();

    switch ($passed_var) {
        case 'A':
        case 'AB':
        case 'ABC':
        case 'ABCD':
            $update_var_1 = 1;
            $update_var = array('update_var_1'=>'1');
            break;
        case 'B':
        case 'BA':
            $update_var_2 = 1;
            $update_var = array('update_var_2'=>'1');
            break;
        case 'C':
            $update_var_3 =1;
            $update_var = array('update_var_3'=>'1');
            break;
        case 'D':
        case 'DA':
            $update_var_4 =1;
            $update_var = array('update_var_4'=>'1');
            break;
        case 'E':
            $update_var_5 =1;
            $update_var = array('update_var_5'=>'1');
            break;
        case 'F':
            $update_var_6 =1;
            $update_var = array('update_var_6'=>'1');
            break;
        case 'G':
            $update_var_7 = 1;
            $update_var = array('update_var_7'=>'1');
            break;
        case 'H':
        case 'HA':
        case 'HB':
            $update_var_8 =1;
            $update_var = array('update_var_8'=>'1');
            break;
        case 'I':
            $update_var_9 =1;
            $update_var = array('update_var_9'=>'1');
            break;
        case 'J':
        case 'JA':
            $update_var_10 =1;
            $update_var = array('update_var_10'=>'1');
            break;
        default:
            $update_var = '';
    }

    return $update_var;
}

Ben fazla şeyler zorlaştıran muyum??

4 Cevap

Ben burada ne ihtiyacınız $ GLOBALS dizi olduğunu düşünüyorum. Örneğin, sen $ GLOBALS ['var_1'] = Eğer fonksiyonu döndüğünüzde 1 sonra, değişken $ var_1 1 kurulacaktır atarsanız.

Sen dışında fonksiyonu beyan değişkenlere erişemezsiniz. Ama anahtar kelime global to access global variables in your function. But I really don't think this is what you actually want to do. You might either want to return a variable variable veya reference kullanabilirsiniz.

 // Variable variable example:
 $var_1 = 'test';
 $a = 'var_1';
 echo $$a; // outputs 'test'

 // Reference example:
 $var_1 = 'test';
 $a = &$var_1;
 $a = 'test2';
 echo $var_1; // outputs 'test2'

Bu ne elde etmek istediğinizi anlamak zor, ama ben gördüğünüz gibi, size $ var_array dışarı dökümü ve bir şey gibi görürsünüz

Key: update_var_1 VALUE: 1

Ve bu isme dayalı değişken $ VAR_1 güncellemek istiyor?

PHP'nin "variable variables" çalışacak kullanarak bu gibi bir şey, - ilk olarak, değişken adı türetmek gerekir

$varname=str_replace("update_", "", $key);

Sonra ona değer atayabilirsiniz

$$varname=$value

Eğer ilk etapta değişken ayarını biri misiniz? Bu noktada hangisi olduğunu biliyorum, ve yerine denilen kod için bir "puzzle" dönen, değişken set var hangi olarak bazı gösterge geri geçebileceği çünkü.