2016-11-07 7 views
-1

У меня есть два поля ввода в форме PHP. Поля должны быть сохранены в массиве, а на выходе должна быть длина слова каждого слова рядом с ним в скобках. Также необходимо оценить, какое поле ввода 1 или 2 имеет самое длинное слово и сколько слов в каждом поле. Он показывает ошибку во время выполнения. синтаксическая ошибка, неожиданный конец файла Screenshot 1Screenshot 2Explode string to array PHP

<!DOCTYPE html "> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
      <title> Two Input field compare PHP </title> 
    </head> 
    <body> 
     <?php 

     echo "<br/>"; 

     if (isset($_POST['submit'])) { 
      $input1 = $_POST['input1']; 
      $input2 = $_POST['input2']; 
      //example $input1 = "Learning the PHP"; 
      //example $input2 = "Counting words and showing(7) like this word<< "; 

      if (empty($input1)) { 
       echo "You need to enter both fields !"; 
      } 
      if (empty($input2)) { 
       echo "You need to enter both fields !"; 
      } 

       echo $input1; 
       echo $input2; 


      $inputarr1 = explode(" ", $input1); 
      $inputarr2 = explode(" ", $input2); 



      $longestlenghtarr1 = $longestlenghtarr2 = 0; 

      $arraylength1 = sizeof($inputarr1); 
      $arraylength2 = sizeof($inputarr2); 



      $longest1 = $longest2 = 0; 

      for ($x = 0; $x < arraylength1; $x++) { 

      echo $inputarr1[$x] . " &lt; " . strlen($inputarr1[$x]) . " &gt; "; 
       if (strlen($inputarr1[$x]) > $longest1) { 
        $longest1 = strlen($inputarr1[$x]); 
       } 
      } 

      for ($y = 0; $y < arraylength2; $y++) { 
       echo $inputarr2[$y] . " &lt; " . strlen($inputarr2[$y]) . " &gt; "; 

       if (strlen($inputarr2[$y]) > $longest2) { 
        $longest2 = strlen($inputarr2[$y]); 
       } 
      } 

       if ($longest1 > $longest2) { 
       echo "<br/> The field 1 input has longest word of lenght " . $longest1." characters !"; 
       } 

       if ($longest2 > $longest1) { 
         echo "<br/> The field 2 input has longest word of lenght " .$longest2." characters !"; 
        } 

        if ($arraylength1 > $arraylength2) { 
        echo "<br/> The field 1 input has more words";} 
         if ($arraylength2 > $arraylength1) { 
          echo "<br/> The field 2 input has more words"; 
         } 

         echo "<br/>"; 

       ?> 

      <div> 
          <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 

       Input Text 1 <br/> 
       <input type="text" name="input1" /><br/> 
       Input Text 2 <br/> 
       <input type="text" name="input2" /><br/> 
       <input type="submit" name="submit" value="Submit" /> 
      </form> 

     </div> 

</body></html> 
+0

Можете ли вы помочь в дальнейшем! –

+2

Вам просто нужно отладить его. Как правило, когда вы сталкиваетесь с ошибками, первое, что вы делаете, это включить отчет об ошибках. Но вы покончили с этим по какой-либо причине: 'error_reporting (0);'. «Он показывает ошибку во время выполнения». Какая ошибка? * Вам нужно ввести оба поля! *? – HPierce

+0

Я пересмотрел код. Можете ли вы снова проверить? –

ответ

1

Возможно неправильное имя переменной - это должно вызвать что-то вроде Undefined index 'input1' ошибки.

Попробуйте заменить $POST_ с $_POST, так что вы должны иметь

$input1 = $_POST['input1']; 
$input2 = $_POST['input2']; 
+0

Еще нет выхода. Необходимо проверить строку explode и count –

+0

Прежде всего, поскольку @HPierce попробуйте заменить 'error_reporting (0);' с 'error_reporting (E_ALL);' или просто прокомментировать эту строку, чтобы увидеть ошибки в вашем коде. Первый аргумент функции 'explode' должен быть char (у вас есть пустая строка), поэтому поставьте пробел между вопросительными знаками. И чем у вас есть '$ inputarr1 = explode ...', но позже вы выполняете итерацию через' $ inputarray1' (другой массив). – LiTe

+0

Посмотрите на этот diff https://www.diffchecker.com/CIkvwkQF – LiTe