0

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

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

4 回答 4

3
  • A成为第一个数组并B成为第二个数组
  • 如果长度A== 长度B 那么
    • 对于i = 0 到LENGTH(A)- 1
      • 如果 A[i]!=B[LENGTH(A) - 1 - i]
        • 返回
    • 返回
  • 别的
    • 返回
于 2013-06-12T01:30:26.287 回答
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';
}
于 2013-06-12T01:30:46.787 回答
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;
}
于 2013-06-12T01:34:19.930 回答
0

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

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

这仅在您的数组长度相同时才有效,但如果它们的长度不同,则无论如何您的答案都会自动为假,因此您可以在开始之前进行检查。

您应该能够在不到 10 行代码中做到这一点。

于 2013-06-12T01:36:33.700 回答