所以这可能是我看起来很简单的事情,但我需要弄清楚如何做到这一点。这是我正在上课的一个问题,但我不希望有人为我做我的工作(我永远不会那样学习)我更希望找到一个好的起点。在这个例子中,我需要创建一个数组,对它进行排序,然后反转它。我得到了那么多。
最后一部分是将给定数组与可能反转的版本进行比较,如果是正确的反转,则输出“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;
我的代码格式化方面的任何提示也将受到赞赏。
我实际上想要感谢我得到的所有回复以及获得它们的速度。所有的评论和答案已经开始给我很多帮助。我想我可能刚刚一直在思考这个问题,而且我指出的一些事情帮助我意识到了这一点。再次感谢所有人。
答案 0 :(得分:3)
A
成为第一个数组,B
成为第二个数组A
的长度== B
的长度那么
LENGTH(A)
- 1
A[i]
!= B[LENGTH(A) - 1 - i]
答案 1 :(得分:0)
当然最简单的方法:
$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';
}
答案 2 :(得分:0)
您可以做的是首先检查两个阵列的长度是否相同。如果他们不是这样,你就知道一个人不是另一个人的逆转。
接下来,从$ 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;
}
答案 3 :(得分:0)
不要过度思考它。没有理由实际反转其中一个阵列。
你真的只需要遍历一个数组,并将每个元素与另一个数组中相应反转位置的元素进行比较。如果您发现某些内容不匹配,您可以立即断定您的答案是错误的。
这仅适用于您的阵列长度相同的情况,但如果它们的长度不同,则答案自动为假,因此您可以在开始之前检查它。
您应该可以在10行代码中完成此操作。