2015-08-08 30 views
2

我想轉換簡單的字符串,如果字符串是3,4-8-7,5然後我需要設定爲(3,8,7),(4,8,5)來設定基於以下邏輯轉換簡單的字符串格式要求:PHP

構建集合的邏輯是我們需要考慮','作爲OR條件和' - '作爲AND條件。

我使用循環盡我所能:

$intermediate = array(); 

$arry_A = explode('-', '3,4-8-7,5'); 

for ($i = 0; $i < count($arry_A); $i++) { 

    $arry_B = explode(',', $arry_A[$i]); 

    for ($j = 0; $j < count($arry_B); $j++) { 

     if (count($intermediate) > 0) { 

      for ($k = 0; $k < count($intermediate); $k++) { 

       $intermediate[$k] = $intermediate[$k] . ',' . $arry_B[$j]; 

      } 

     } elseif (count($intermediate) === 0) { 

      $intermediate[0] = $arry_B[$j]; 

     }   

    } 
} 

echo $intermediate,應該給最終的結果。

+1

什麼'(3,8,5)'和'(4,8,7)'? –

+0

此外,它看起來像給予'OR'(',')的優先級高於'AND'('-')。那是對的嗎? –

+0

必須從左到右評估表達式。我不需要優先。更多信息:另一個例子是:如果字符串是「4-5,6-4」,那麼所需的設置將是(4,5,4),(4,6,4) –

回答

0

此代碼工作正常,試試這個

<?php 
    $intermediate = array(); 
    $str=""; 
    $val='3,4-8-7,5'; 
    $vals=str_replace(',','-',$val); 
    $j=1; 
    $arry_A = explode('-',$vals); 
    $str.='('; 
    for ($i = 0; $i < count($arry_A); $i++) { 

     if($j==3){ 
      $str.=$arry_A[$i].','; 
      $str.='),'; 
      $str.='('; 
      $j=1; 
     } 
     else 
      $str.=$arry_A[$i].','; 
     $j++; 
    } 
    echo substr($str, 0, -2); 
?> 
+0

您能否看到我的最新評論並提供方向或解決方案。期待你的投入。 –