2016-05-29 111 views
1

我有一个数组:如何比较数组的最后2个元素?

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" 
    ] 
] 

,然后将其分解。但我不知道如何比较这个新阵列中的这2个元素。由于随着更多数据的添加,现在的67的最后2个元素可能会发生变化。我基本上需要判断第一个元素是否大于,小于或等于第二个元素。

+0

比较两个数组,哪个和哪个?你需要比较第6和第7元素吗? –

+0

我需要比较拼接后的2个元素。在这种情况下,它的第6和第7个基本上是第一个数组中的最后2个元素。 – kevinabraham

+0

你的答案在等着你,检查并让我知道。 –

回答

1

您可以使用内置的end()功能,然后prev()

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

简单而有效。谢谢! – kevinabraham

+0

@kevinabraham,很高兴它有帮助。 ) –

0

在有输出数组

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"; 
+0

它更好地使用'array_column'和'array_values',看我的答案。 –

+0

顺便说一句,你正在使用它们。 – xdevnull

+0

是的,两者都需要制作一个简单的数组。 –

0

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

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

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

如果您从以前的代码获得的数组被称为$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>"; 
} 
0

如果它适合你,你可以只使用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."; 
    }