문제

OK 10 변수는 있지만 하나는 설정해야하지만 설정이 설정 될 때까지 각 값을 확인해야합니다. 스위치/케이스 명령문을하고 있지만 설정이 필요한 변수 만 반환 할 수있는 방법을 알지 못하기 때문에 이것이 최선의 방법인지 확실하지 않습니다.

$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;
}

나는 과도하게 복잡한 일입니까 ???

도움이 되었습니까?

해결책

여기에 필요한 것은 $ Globals 배열이라고 생각합니다. 예를 들어, $ global [ 'var_1'] = 1을 할당하면 함수에서 돌아 오면 변수 $ var_1이 1으로 설정됩니다.

다른 팁

외부에서 함수에서 선언하는 변수에 액세스 할 수 없습니다. 그러나 키워드를 사용할 수 있습니다 global 기능의 글로벌 변수에 액세스합니다. 그러나 나는 이것이 당신이 실제로하고 싶은 일이라고 생각하지 않습니다. 반환하고 싶을 수도 있습니다 변수 변수 또는 a 참조.

 // 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'

당신이 달성하고자하는 것을 이해하기는 어렵지만, 내가 볼 수 있듯이, 당신은 당신의 $ var_array를 버리고 당신은 다음과 같은 것을 볼 수 있습니다.

Key: update_var_1 VALUE: 1

그리고 그 이름에 따라 변수 $ var_1을 업데이트하고 싶습니까?

PHP를 사용하여 이와 같은 것 "변수 변수" 작동합니다 - 먼저 변수의 이름을 도출해야합니다.

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

그런 다음 값을 할당 할 수 있습니다

$$varname=$value

당신은 처음에 변수를 설정하고 있습니까? 그 시점에서 당신은 그것이 어떤 것이 있는지 알고 있으며, "퍼즐"을 코드로 반환하는 대신 어떤 변수가 설정되었는지에 대한 표시를 전달할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top