2016-09-16 60 views
1

我的印象是这个脚本可以用较短的方式重写,但我无法弄清楚。 有没有更简单的方法来做到这一点?切换语句:获得相同的结果,但代码较少

switch($n){ 
      case 1: 
       $eta1 = $_POST['eta_1']; 
       break; 
      case 2: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       break; 
      case 3: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       break; 
      case 4: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       break; 
      case 5: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       break; 
      case 6: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       $eta6 = $_POST['eta_6']; 
       break; 
      case 7: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       $eta6 = $_POST['eta_6']; 
       $eta7 = $_POST['eta_7']; 
       break; 
      case 8: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       $eta6 = $_POST['eta_6']; 
       $eta7 = $_POST['eta_7']; 
       $eta8 = $_POST['eta_8']; 
       break; 
      case 9: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       $eta6 = $_POST['eta_6']; 
       $eta7 = $_POST['eta_7']; 
       $eta8 = $_POST['eta_8']; 
       $eta9 = $_POST['eta_9']; 
       break; 
      case 10: 
       $eta1 = $_POST['eta_1']; 
       $eta2 = $_POST['eta_2']; 
       $eta3 = $_POST['eta_3']; 
       $eta4 = $_POST['eta_4']; 
       $eta5 = $_POST['eta_5']; 
       $eta6 = $_POST['eta_6']; 
       $eta7 = $_POST['eta_7']; 
       $eta8 = $_POST['eta_8']; 
       $eta9 = $_POST['eta_9']; 
       $eta10 = $_POST['eta_10']; 
       break; 
      default: 
       break; 
     } 

该名称反映了变量$ _POST收到的值。

使用@发布的代码不要恐慌我需要更新并在现有数组中插入变量的值。

for ($i=1; $i <= $n_bambini; $i++) { 
     ${"eta$i"} = $_POST["eta_$i"]; 
     $_SESSION['dati_cerca_vacanza'] = ["eta$i"=>${"eta$i"}]; 
    } 

的阵列已经存在的格式如下:

$_SESSION['dati_cerca_vacanza']= ['citta'=>$citta, 'tipo_vacanza'=>$tipo_vacanza, 'lingua'=>$lingua, 'data_arrivo'=>$data_arrivo, 'data_partenza'=>$data_partenza, 'n_adulti'=>$n_adulti, 'n_bambini'=>$n_bambini]; 

因为它不工作?

+0

你只是想节省代码行吗? –

+0

@ THarris76是... –

+0

定义一次数组中的最大可能情况,并根据切换条件切片该数组。 – arkascha

回答

0

一个可变变量的方法:

for ($i=1; $i <= $n; $i++) { 
    ${"eta$i"} = $_POST["eta_$i"]; 
} 

${"eta$i"}创建您的各种$eta1$eta2等变量名和$_POST["eta_$i"]$_POST得到相应的价值。


关于你的编辑,如果你想将这些值追加到会话密钥,而不是此

$_SESSION['dati_cerca_vacanza'] = ["eta$i"=>${"eta$i"}]; 

您可以使用此

$_SESSION['dati_cerca_vacanza']["eta$i"] = $_POST["eta_$i"]; 

你正在做的方式它会在每次迭代中替换$_SESSION['dati_cerca_vacanza']的全部内容。

+0

我并不确定你的意思,但如果你多解释一下,我可能会提供帮助。 –

+0

我正在尝试使用您的代码,但当我尝试向现有数组添加几个键值时,我遇到问题 –

+0

我无法在注释中编写代码!你可以在评论中插入代码块? –

0

为什么在使用数组时使用这么多的值?

$eta = array_values($_POST['eta']); 

只要确保你让你输入字段进入一个ETA阵列

+0

我必须强调的< n >孩子年龄......所以,我需要知道每个孩子的年龄.. 5个孩子都将有例如 儿子1(eta_1) 儿子2(eta_2) 不同年龄等等.. –

2

您可以反转这样

switch($n){ 
     case 10: 
      $eta10 = $_POST['eta_10']; 
     case 9: 
      $eta9 = $_POST['eta_9']; 
     case 8: 
      $eta8 = $_POST['eta_8']; 
     case 7: 
      $eta7 = $_POST['eta_7']; 
     case 6: 
      $eta6 = $_POST['eta_6']; 
     case 5: 
      $eta5 = $_POST['eta_5']; 
     case 4: 
      $eta4 = $_POST['eta_4']; 
     case 3: 
      $eta3 = $_POST['eta_3']; 
     case 2: 
      $eta2 = $_POST['eta_2']; 
     case 1: 
      $eta1 = $_POST['eta_1']; 
    } 

注意的选项没有break在箱子里面,所以,如果$n == 10 ...以下所有情况都被执行

相关问题