2014-02-12 4 views
0

Я пытаюсь запустить код ниже:Вложенный цикл, если PHP

  • 1) проверить первый символ $ STRING_RESULT
  • 2), если первый символ $ STRING_RESULT матч в массиве first_char это приведет строка вывода
  • 3), если первый символ равен «п», я сравниваю два первых полукокса из $ STRING_RESULT в массив second_char
  • 4) Если я удалю вложенным, если п еще, он работает хорошо. Я сделал там некоторые логические ошибки?

    <?php 
        $string_result = "nyanyi"; 
        function awalan_pe($string_result){ 
        $first_char = array("m", "n", "r", "l", "w"); 
        $second_char = array("ny", "ng"); 
        $result = (substr($string_result, 0,2)); 
        foreach ($first_char as $value){ 
        if ($string_result[0] == $value) { 
         $final_result = "pe".$string_result; 
    
         if(($string_result[0] == $value) == "n"){ 
          foreach ($second_char as $value){ 
           if($result == $value){ 
           $final_result = "pe".$string_result; 
           } 
          } 
         } 
        } 
        else{ 
         return null; 
        } 
    } 
    return $final_result; 
    } 
    echo awalan_pe($string_result); 
    ?> 
    

, к сожалению, она возвращает нуль.

+0

"если (($ STRING_RESULT [0] == $ значение) == "п") {" вы сравниваете логическое значение со строкой здесь, вероятно, не то, что вы намеревались сделать – djfm

ответ

0

in_array поможет в этой ситуации, смотрите следующий заказной код для вашего кода.

<?php 
    $string_result = "nyanyi"; 
    function awalan_pe($string_result){ 
    $first_char = array("m", "n", "r", "l", "w"); 
    $second_char = array("ny", "ng"); 
    $result = (substr($string_result, 0,1)); //store 1st Char 
    $result2 = (substr($string_result, 0,2)); //store 1st and 2nd Char 
    $flag=0; 
    if($result === "n") //if first char is "n" 
    { 
     if(in_array($result2, $second_char)) //to check whether entry is present in array or not 
     { 
      $final_result= "String Found"; 
      $flag=1; 
     } 
    } 
    else{ 
     if(in_array($result, $first_char)) 
     { 
      $final_result= "String Found"; 
      $flag=1; 
     } 
    } 
    if($flag == 0) 
    { 
    return null; 
    } 

return $final_result; 
} 
echo awalan_pe($string_result); 
?> 
1

Это будет return null, так как вы не остановите итерацию после того, как найдете правильный.

Move возвращение $final_result после вы нашли конечный результат, как

$final_result = "pe".$string_result; 
return $final_result; 
0

По пути, я модифицирована:

public function awalan_pe($string_result){ 
     $first_char = array("m", "n", "r", "l", "w"); 
     $second_char = array("ny", "ng"); 
     $str_len = strlen($string_result); 
     for($i = 0; $i <= $str_len; $i++){ 
      foreach($first_char as $f_char){ 
       if(substr($string_result,$i,$i+1) == $f_char){ 
        if(substr($string_result,$i,$i+1) == "n"){ 
         for($j=0; $j <= $str_len; $j++){ 
          foreach($second_char as $s_char){ 
           if(substr($string_result,$i,$i+2) == $s_char){ 
            return "in second array value:" .$s_char; 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
     return "not in first array"; 
    } 
Смежные вопросы