2016-05-29 110 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."; 
    }