سؤال

وطيب عندي عشرة المتغيرات ولكن يحتاج المرء أن يكون تعيين، ولكني في حاجة للتحقق من كل القيم حتى يتم تعيين واحد. أنا بعمل سويتش بيان / كيس لكنني لست متأكدا مما إذا كان هذا هو أفضل نهج لأنني لا أرى كيف يمكنني العودة فقط المتغير الذي أحتاج تعيينها.

$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. على سبيل المثال، إذا قمت بتعيين $ GLOBALS [ 'VAR_1'] = 1 ثم عند العودة من وظيفة، سيتم تعيين $ VAR_1 المتغير إلى 1.

نصائح أخرى

ولا يمكنك الوصول إلى المتغيرات التي تقوم بتعريف في وظيفة من الخارج. ولكن يمكنك استخدام الكلمة global للوصول إلى المتغيرات العالمية في وظيفة الخاص بك . ولكن في الحقيقة أنا لا أعتقد أن هذا هو ما كنت فعلا تريد أن تفعل. قد إما تريد إرجاع متغير متغير أو <أ href ل = "http://php.net/manual/en/language.references.php" يختلط = "نوفولو noreferrer"> مرجع .

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

هل أنت واحد وضع المتغير في المقام الأول؟ لأنه في تلك المرحلة كنت تعرف أي واحد هو، وكنت قد رجع بعض المؤشرات على النحو الذي حصل متغير مجموعة، وبدلا من إرجاع "اللغز" إلى رمز الذي يطلق عليه.

scroll top