2014-10-27 50 views
0

在PHP中,有一種方法可以訪問我在同一個switch語句的另一個case塊中的switch語句的一個case塊中賦予變量的值嗎?例如,我想要訪問我在下面的「保存更改」情況下的「修改任務」大小寫塊中分配給$ task_to_modify的值。這是我的代碼。任何建議都可以幫助我,因爲我是PHP新手。謝謝。如何檢索我分配給PHP中另一個開關大小寫塊中的一個開關大小寫塊中的變量的值?

$task_to_modify 
switch($_POST['action']) { 
case 'Add Task': 
    $new_task = $_POST['newtask']; 
    if (empty($new_task)) { 
     $errors[] = 'The new task cannot be empty.'; 
    } else { 
     //$task_list[] = $new_task; //original code 
     array_push($task_list, $new_task); 
    } 
    break; 
case 'Delete Task': 
    $task_index = $_POST['taskid']; 
    unset($task_list[$task_index]); 
    $task_list = array_values($task_list); 
    break; 
case 'Modify Task': 
    global $key; 
    $key = $_POST['taskid']; //taskid is index of selected task from tasks selection list 
    global $task_to_modify; 
    $task_to_modify = $task_list[$key]; 
    set_task_to_modify($task_to_modify); 
    echo "modify task case reached. task_to_modify is " . $task_to_modify; 
    break; 
case 'Save Changes': 
    global $task_to_modify; 
    if(in_array($new_task, $task_list)) { //if old value is in the list 
     $index = array_search($new_task, $task_list); //return index # of old value 
     $task_list[$index] = $task_to_modify; //replaces old value with newly entered value 
     unset($task_to_modify); //deletes var so original form will show 
    } 
    break; 
case 'Cancel Changes': //works correctly 
    echo 'no changes saved'; 
    unset($task_to_modify); 
    break; 

}

回答

0

PHP具有用於每個塊中沒有範圍。所以這個變量在'修改任務'模塊和'保存更改'模塊中可用,因爲它們共享相同的範圍。你也可以看看here來更好地理解它。

+0

感謝您的澄清和鏈接,但它仍然不適合我。我聲明瞭我的$ task_to_modify變量,並將其初始化爲switch語句外的「',並且在修改任務大小寫塊中爲其賦值,但仍無法在Save Changes案例中訪問該值塊。我的代碼遵循與您提供的鏈接中的代碼相同的格式,但由於某些原因,它仍然不起作用。 – jeffkempf 2014-10-28 14:45:34

+0

我懷疑你對這些變量的工作原理有錯誤的想法。腳本啓動並終止後,所有這些變量都會被擦除,因此如果刷新沒有,$ task_to_modify將被定義。如果你正在尋找持久變量,你應該看看會話。 – Kei 2014-10-28 17:34:12

+0

我從來沒有想過腳本執行和終止。我找到了解決方案。這是有點馬虎,但至少它工作。謝謝。 – jeffkempf 2014-10-28 19:57:17

相關問題