【问题标题】:How to compare last 2 elements of an array?如何比较数组的最后两个元素?
【发布时间】:2016-05-29 09:43:34
【问题描述】:

我有一个数组:

array:8 [▼
  0 => array:1 [▼
    "data" => "789"
  ]
  1 => array:1 [▼
    "data" => "800"
  ]
  2 => array:1 [▼
    "data" => "789"
  ]
  3 => array:1 [▼
    "data" => "787"
  ]
  4 => array:1 [▼
    "data" => "787"
  ]
  5 => array:1 [▼
    "data" => "787"
  ]
  6 => array:1 [▼
    "data" => "787"
  ]
  7 => array:1 [▼
    "data" => "787"
  ]
]

我需要取出数组的最后 2 个元素并比较它们。我尝试使用$getLast2 = array_slice($chart_data, -2, 2, true); 获得最后 2 个。

array:2 [▼
  6 => array:1 [▼
    "data" => "787"
  ]
  7 => array:1 [▼
    "data" => "787"
  ]
]

然后拆分它。但我不确定如何比较这个新数组中的这两个元素。最后两个元素现在是67,随着更多数据的添加可能会发生变化。我基本上需要判断第一个元素是否大于、小于或等于第二个元素。

【问题讨论】:

  • 比较两个数组,哪个和哪个?你需要比较第6个和第7个元素吗??
  • 拼接后需要比较两个元素。在这种情况下,它是第 6 个和第 7 个,它基本上是第一个数组中的最后 2 个元素。
  • 你的答案在等着你,检查并告诉我。
  • 如果我的回答对你有用,请告诉我。
  • 感谢您的所有回答。决定使用 prev 和 end 内置函数,因为它们是最简单的。

标签: php arrays compare


【解决方案1】:

您可以使用内置的end() 函数,然后使用prev()

if (end($chart_data) == prev($chart_data)) {
    echo 'Two last elements of an array are equal!';
}

【讨论】:

  • @kevinabraham,很高兴它有帮助。 )
【解决方案2】:

将最后一个变量作为 false 传递;

preserve_keys 请注意,默认情况下,array_slice() 将重新排序和重置数字数组索引。您可以通过将 preserve_keys 设置为 TRUE 来更改此行为。

array_slice($chart_data, -2, 2, false);

【讨论】:

    【解决方案3】:

    你已经输出了这个数组

    array:2 [▼
      6 => array:1 [▼
        "data" => "787"
      ]
      7 => array:1 [▼
        "data" => "787"
      ]
    ]
    

    重新索引它们以使用 PHP array_values() 函数

    $outputedArray = array_values($outputedArray)
     if($outputedArray[0]['data'] > $outputedArray[1]['data'])
         echo "0 index is greater";
    

    【讨论】:

    • 使用array_column 比使用array_values 更好,请参阅我的回答。
    • 顺便说一句,你正在使用它们。
    • 你认为它们真的不同吗?而不是使用array_column() 注入密钥?
    • 我不是要你改变你的代码,只是看看他们做了什么,你和我的结果是一样的,但你可能需要看到array_column的魔力,我相信在了解你之后将在您的整个 PHP 数组之旅中使用它。
    【解决方案4】:

    如果您从之前的代码中获得的数组名为$splitArray,那么您可以执行以下操作:

    list($array1, $array2) = $splitArray;
    if ($array1['data']>$array2['data'])
    {
      echo "1st is greater than 2nd<br>";
    }
    else
    {
      echo "1st is not greater than 2nd<br>";
    }
    

    【讨论】:

      【解决方案5】:

      如果适合你,你可以使用 array_pop 以这种方式进行比较:

          <?php
              $array = [
                  ["data" => "789"],
                  ["data" => "800"],
                  ["data" => "789"],
                  ["data" => "787"],
                  ["data" => "787"],
                  ["data" => "789"],
                  ["data" => "787"],
                  ["data" => "787"],
              ];
      
          // MAKE A COPY OF THE ORIGINAL ARRAY:
          $arrayCopy      = $array;
      
          // POP THE LAST ELEMENT OFF THE $arrayCopy AND SAVE IT AS $lastElem:
          $lastElem       = array_pop($arrayCopy);
      
          // POP THE LAST ELEMENT OFF THE $arrayCopy AGAIN AND SAVE IT AS $beforeLastElem:
          $beforeLastElem = array_pop($arrayCopy);
      
          // NOW YOU CAN COMPARE THE LAST ELEMENT AND THE ONE BEFORE IT
          if($lastElem == $beforeLastElem){
              echo "The last 2 Elements of \$array are the same";
          }else{
              echo "The last 2 Elements of \$array are not identical.";
          }
      

      【讨论】:

        猜你喜欢
        • 2016-06-19
        • 1970-01-01
        • 2011-01-13
        • 2021-08-08
        • 2021-05-06
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多