2016-11-22 62 views
0

我正在处理显示开放时间的代码段,并且它在英语语言中正常工作,并且当我将数组的键更改为另一种语言时,它不会连字符,而是用逗号分隔。使用连字符不能与i18N一起工作的分组

我在做什么错了?

下面是2个数组的PHP代码,其中有1个评论是在英语中,哪些工作正常。另一个是意大利langugage平日

<?php 
    /* 
    // english weekdays 
    $openHours = array(
     'Mon' => '9am-7pm', 
     'Tue' => '9am-7pm', 
     'Wed' => '9am-7pm', 
     'Thu' => '9am-10pm', 
     'Fri' => 'closed', 
     'Sat' => '9am-10pm', 
     'Sun' => '9am-10pm' 
    ); 
    */ 
    // italian weekdays 
    $openHours = array(
     'lunedì' => '9am-7pm', 
     'martedì' => '9am-7pm', 
     'mercoledì' => '9am-7pm', 
     'giovedì' => '9am-10pm', 
     'venerdì' => 'closed', 
     'sabato' => '9am-10pm', 
     'domenica' => '9am-10pm' 
    ); 

    $new_array = array(); 
    foreach($openHours as $key => $value) 
    { 
     if(in_array($value,$new_array)) 
     { 
     $key_new = array_search($value, $new_array);//to get the key of element 
     unset($new_array[$key_new]); //remove the element 
     $key_new = $key_new.','.$key; //updating the key 
     $new_array[$key_new] = $value; //inserting new element to the key 
     } 
     else 
     { 
     $new_array[$key] = $value; 
     } 
    } 

    foreach ($new_array as $days=>$time){ 
     $daylist = explode(',',$days); 
     if ($time!='closed'){ 
     if (count($daylist)>2){ 
      $limit = count($daylist)-1; 
      $first = $daylist[0]; 
      $last = $daylist[$limit]; 
      //loop will go here. 
      if (date('D', strtotime('+'.$limit.' days', strtotime($first)))==$last){ 
       echo $first.'-'.$last.' '.$time.'<br>'; 
      } else { 
       $sep = ''; 
       foreach ($daylist as $sepdays){ 
        echo $sep.$sepdays; 
        $sep = ','; 
       } 
       echo ' '.$time.'<br>'; 
      } 

     } else { 
      echo $days.' '.$time.'<br>'; 
     } 
     } else { 
      $daylist = explode(',',$days); 
      foreach ($daylist as $sepdays){ 
        echo $sepdays.' '.$time.'<br>'; 
       } 
     } 

    } 
    ?> 

结果 现在是什么结果我用意大利语获得。

lunedì,martedì,mercoledì 9am-7pm 
venerdì closed 
giovedì,sabato,domenica 9am-10pm 

预期的结果 这是我期待的。

lunedì-mercoledì 9am-7pm 
venerdì closed 
giovedì,sabato,domenica 9am-10pm 

回答

0

您正在使用中datestrtotime功能的阵列的钥匙做你的比较,这两个函数适用于英语。如果你需要在其他语言上使用它,你应该使用setlocalestrftime,这将会是一个非常复杂的过程。我的建议:

  1. 使用星期几(0-6)的数字表示法并在显示中将数字替换为所需语言的值。

  2. 使用多维数组,包括星期数字和开放时间。

相关问题