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

时间:2013-06-12 01:18:08

标签: php arrays compare

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

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

我的代码格式化方面的任何提示也将受到赞赏。

我实际上想要感谢我得到的所有回复以及获得它们的速度。所有的评论和答案已经开始给我很多帮助。我想我可能刚刚一直在思考这个问题,而且我指出的一些事情帮助我意识到了这一点。再次感谢所有人。

4 个答案:

答案 0 :(得分:3)

  • A成为第一个数组,B成为第二个数组
  • 如果 A的长度== B的长度那么
    • 对于 i = 0到LENGTH(A) - 1
      • 如果 A[i]!= B[LENGTH(A) - 1 - i]
        • 返回错误
    • 返回 True
  • 否则
    • 返回错误

答案 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行代码中完成此操作。