比较两个php数组,看看其中一个是否与另一个相反


Compare two php arrays to see if one is the reverse of the other

所以这可能是一些简单的,我只是在看,但我需要弄清楚如何做到这一点。这是我正在上的一门课的问题,但我不希望有人为我做我的工作(我永远不会那样学习),我更希望找到一个好的起点。在这个例子中,我需要创建一个数组,对它排序,然后反转它。我记下来了。

最后一部分是将给定数组与可能反转的版本进行比较,如果反转正确则输出"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]
  • 其他

您可以做的是首先检查两个数组的长度是否相同。如果它们不是,那么你就知道其中一个不是另一个的反转。

接下来,从$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;
}

别想太多了。没有理由实际反转其中一个数组。

实际上只需要循环遍历一个数组,并将每个元素与另一个数组中相应反转位置的元素进行比较。如果你发现某些东西不匹配,你可以立即断定你的答案是错误的。

这只适用于数组长度相同的情况,但如果它们的长度不相同,你的答案无论如何都会自动为假,所以你可以在开始之前检查一下。

你应该可以在不到10行代码中完成。

最简单的方法当然是:

$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';
}