我不知道如何处理这个 PHP 代码
I dont know what to do with this PHP Code
下面的代码基本上有助于确定一个数字是否为 Palindromic Number
。虽然我通过输出完成了执行,但我似乎可以处理我遇到的所有 "screams" 和致命错误。我该如何处理。只是初学者,相信你能用我能理解的方式解释..
<?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";
}
}
?>
您得到了元素的大小,即 1。但是,如果您的 array
只有一个元素,即 1 位数字的情况,则 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
returnsfalse
第一次发现差异时,进一步优化检查
- 如果没有差异,则
function
returnstrue
,代表输入为回文
下面的代码基本上有助于确定一个数字是否为 Palindromic Number
。虽然我通过输出完成了执行,但我似乎可以处理我遇到的所有 "screams" 和致命错误。我该如何处理。只是初学者,相信你能用我能理解的方式解释..
<?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";
}
}
?>
您得到了元素的大小,即 1。但是,如果您的 array
只有一个元素,即 1 位数字的情况,则 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
returnsfalse
第一次发现差异时,进一步优化检查- 如果没有差异,则
function
returnstrue
,代表输入为回文