обработка ошибок — я не знаю, что делать с этим кодом PHP

Код ниже в основном помогает выяснить, является ли число Palindromic Number или нет. Несмотря на то, что я выполнил свое выполнение с выводом, я просто могу справиться со всеми «криками» и фатальными ошибками, которые я получаю. Как мне справиться с этим. Просто начинающий и доверие, которое вы можете объяснить так, как я могу понять ..

<?php

for ($num = 1; $num <= 20; ++$num){

$_array1 = str_split($num);
//print_r($_array1);
//echo "<br/>";

$_array2 = array_reverse($_array1);
//print_r($_array2);
//echo "<br/>";

$i = 0;
$j = 0;

while ($i < sizeof($_array1) && $j < sizeof($_array2)){
if ($_array1[$i] == $_array2[$j]){
++$i;
++$j;
}

}

if ($_array1[$i] == $_array2[$j]){
echo "The number $num is a Palindrome Number";
}
}

?>

-7

Решение

Вы получаете размер элементов, который равен 1. Однако, если ваш array имеет только один элемент, который имеет место для однозначных чисел, то sizeof($_array) === 1, Это означает, что самый большой индекс, который вы можете использовать, равен 0. Вам нужно изменить код на что-то вроде этого:

<?php

for ($num = 1; $num <= 20; ++$num){

$_array1 = str_split($num);
//print_r($_array1);
//echo "<br/>";

$_array2 = array_reverse($_array1);
//print_r($_array2);
//echo "<br/>";

$i = 0;
$j = 0;

$different = false;
while ((!$different) && ($i < sizeof($_array1))){
if ($_array1[$i] == $_array2[$j]){
++$i;
++$j;
} else {
$different = true;
}

}

if (!$different){
echo "The number $num is a Palindrome Number";
}
}

?>

Но вы обращаете array без необходимости делать это, и вы будете без необходимости долго. Я предлагаю это function чтобы определить, является ли массив палиндромом:

function isPalindrome($input) {
$size = count($input);
for ($index = 0; $index < $size / 2; $index++) {
if ($input[$index] != $input[$size - $index - 1]) {
return false;
}
}
return true;
}

Обратите внимание, что:

  • function предполагает, что ключи array числа
  • function использует один array
  • размер array хранится в локальной переменной, чтобы не вычислять ее повторно
  • цикл циклов до половины arrayпоскольку выход за пределы этого не является необходимым, из-за симметричной природы != оператор
  • function возвращается false когда будет найдено первое различие, для дальнейшей оптимизации проверки
  • если бы не было различий, function возвращается true, представляющий, что вход является палиндромом
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]