我不知道如何处理这个 PHP 代码
Posted
技术标签:
【中文标题】我不知道如何处理这个 PHP 代码【英文标题】:I dont know what to do with this PHP Code 【发布时间】:2016-06-19 05:54:15 【问题描述】:下面的代码基本上有助于找出一个数字是否为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";
?>
【问题讨论】:
你遇到了什么错误? SCREAM:忽略错误抑制: 注意:未定义的偏移量:D:\wamp\www\PHP Projects Folder\palindrome_numbers.php 第 24 行中的 1 哪一行是24? if ($_array1[$i] == $_array2[$j]) 【参考方案1】:您会得到元素的大小,即 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
在找到第一个差异时返回false
,以进一步优化检查
如果没有差异,function
返回true
,表示输入是回文
【讨论】:
嘿 Lajos,谢谢您的代码正在运行。是的,我想我和你放在这里的那个很接近。但我只需要知道才能理解,使用 $different = false 是什么意思?它是什么意思/它的含义?你能解释一下吗,.... @SricharanKrishnan,当然。您的代码在您尝试检查数组是否相似时失败。最好的方法是搜索第一个差异。当你找到它时,你知道它不是回文。如果你没有发现差异,那么数组是相似的,所以它是一个回文。 $difference 一开始是假的,因为还没有发现差异。当我们找到第一个差异时,我们将其设置为 true。如果在循环之后它仍然是假的,那么数组是相似的。如果我的回答解决了问题,你可以考虑接受它:) 嘿 Lajos,这真的很棒。非常感谢你的帮助。这是有道理的。是的,听起来不错,请为我祈祷,我变得和你一样好。只是希望事情对我来说会好起来!祝你有美好的一天。以上是关于我不知道如何处理这个 PHP 代码的主要内容,如果未能解决你的问题,请参考以下文章
git status 给了我一些令人困惑的 iOS 配置文件,我不知道如何处理 [重复]
我不知道如何处理 SocketException 以满足我的需要