所以这可能是一些简单的,我只是在看,但我需要弄清楚如何做到这一点。这是我正在上的一门课的问题,但我不希望有人为我做我的工作(我永远不会那样学习),我更希望找到一个好的起点。在这个例子中,我需要创建一个数组,对它排序,然后反转它。我记下来了。
最后一部分是将给定数组与可能反转的版本进行比较,如果反转正确则输出"True",否则输出"False"。它还需要在不使用内置php数组函数的情况下完成。我对编程还是个新手,想要学习。任何帮助将是非常感激,因为我甚至不知道从哪里开始与这最后一部分。这是我目前掌握的信息。
<?php
//Original array
$the_array = array(5,9,2,8,3,1,7,6,4);
$arrayString = implode(',',$the_array);
echo ("The original array is: ");
echo $arrayString;
echo "<br />";
//Sort loop
// Compares each value in the array to the next one by seeing if the value is greater then the next +1
// If the value is greater then the next value +1 then it stores the value and moves it into the next position.
for ($j = 0; $j < count($the_array); $j++)
{
for ($i = 0; $i < count($the_array)-1; $i++)
{
if ($the_array[$i] > $the_array[$i+1])
{
$tmp = $the_array[$i+1];
$the_array[$i+1] = $the_array[$i];
$the_array[$i] = $tmp;
}
}
}
$arrayString = implode(',',$the_array);
echo ("The array after sorting is: ");
echo $arrayString;
echo "<br />";
//reversal loop
for ($tmp = sizeof($the_array) - 1; $tmp >= 0; $tmp--)
{
$reverse[] = $the_array[$tmp]; //New reversed array
}
echo ("The reversed array is: ");
$reverseString = implode(',',$reverse);
echo $reverseString;
任何关于我的代码格式的提示也将是感激的。
实际上,我想对我收到的所有回复表示感谢,并感谢收到回复的速度。所有的评论和回答已经开始给我很多帮助。我想我可能只是对这个问题想得太多了,一些向我指出的事情帮助我意识到这一点。再次感谢大家。
- 设
A
为第一个数组,B
为第二个数组 -
如果
A
的长度==B
的长度则- For i = 0 To
LENGTH(A)
- 1- If
A[i]
!=B[LENGTH(A) - 1 - i]
- 假
- If
- 对
其他 - For i = 0 To
- 假
您可以做的是首先检查两个数组的长度是否相同。如果它们不是,那么你就知道其中一个不是另一个的反转。
接下来,从$arr1的开始到结束运行索引,并将其与$arr2的长度索引进行比较。
如果你卡住了,代码将是:
function is_reversed($a1, $a2){
$n = count($a1);
if ($n != count($a2)){ return false; }
for($i=0; $i<$n; $i++){
if ($a1[$i] != $a2[$n-1-$i]) return false;
}
return true;
}
别想太多了。没有理由实际反转其中一个数组。
实际上只需要循环遍历一个数组,并将每个元素与另一个数组中相应反转位置的元素进行比较。如果你发现某些东西不匹配,你可以立即断定你的答案是错误的。
这只适用于数组长度相同的情况,但如果它们的长度不相同,你的答案无论如何都会自动为假,所以你可以在开始之前检查一下。
最简单的方法当然是:
$array1 = array(1,2,3);
$array2 = array(3,2,1);
if($array1 == array_reverse($array2)){
echo 'Reverse duplicates';
}
如果你不能使用数组函数,那么我们可以使用for
语句进行循环:
<?php
$array1 = array(1,2,3);
$array2 = array(3,2,1);
$future_array2 = array();
for($x=(count($array1)-1);$x>=0;$x--){
$future_array2[] = $array2[$x];
}
echo '<pre>',print_r($future_array2),'</pre>';
$array2 = $future_array2;
if($array1 == $array2){
echo 'Reverse duplicates';
}