2016-02-19 124 views
1

下面我有这样一个关联数组:比较关联数组值和返回不同的值

<?php 
    $first = array(
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170221', 'nextexam' => '170220', 'phone' => '170224', 'fax' => '170220'), 
     array('lastexam' => '170221', 'nextexam' => '170226', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170222', 'nextexam' => '170220', 'phone' => '170225', 'fax' => '170220') 
    ); 
?> 

我需要比较值$first[0]$first[1]$first[1]$first[2]$first[2]$first[3],并$first[3]$first[4]。我需要得到的结果如下:

例如:

<?php 
array 
(
    [2] => array 
    (
    [lastexam] => 170221, 
    [phone] => 170224, 
), 
    [3] => array 
    (
    [nextexam] => 170226, 
    [phone] => 170220, 
), 
    [4] => array 
    (
    [lastexam] => 170222, 
    [phone] => 170225, 
) 
); 
?> 
+0

http://php.net/manual/en/function.array-diff.php –

回答

1

我认为这将解决您的问题

<?php 
    $first = array(
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170221', 'nextexam' => '170220', 'phone' => '170224', 'fax' => '170220'), 
     array('lastexam' => '170221', 'nextexam' => '170226', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170222', 'nextexam' => '170220', 'phone' => '170225', 'fax' => '170220') 
     ); 

    $pre = array(); 
    $cur = array(); 
    $tmp = array(); 
    echo '<pre>'; print_r($first); echo '</pre>'; 
    foreach($first as $key => $val) { 
     foreach ($val as $key1 => $val1) { 
      $cur[$key1] = $val1; 
      if (isset($pre[$key1]) && $pre[$key1] !== $cur[$key1]) { 
       $tmp[$key][$key1] = $val1; 
      } 
      $pre[$key1] = $val1; 
     } 
    } 
    echo '<pre>'; print_r($tmp); echo '</pre>'; 
    ?> 

如果是这样,请喜欢或低于

0

这是一点点,你要搜索的内容?

 $first = array(
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170220', 'nextexam' => '170220', 'phone' => '170220', 'fax' => '170220'), 
     array('lastexam' => '170221', 'nextexam' => '170220', 'phone' => '170224', 'fax' => '170220') 
     ); 


    if((array_values($first)[0]['lastexam']) == (array_values($first)[1]['lastexam'])){ 

     var_dump(array_values($first)[2]['lastexam']); 
     var_dump(array_values($first)[2]['phone']); 

    } else { 
     // 
     echo "whatever..." ; 
     // 
    } 

?? ??不完美,因为我没有掌握你想要达到的总体情况。但是通过这个if语句,你至少可以比较你想要比较的东西。祝你好运!。

1

别人的评论,我觉得它有很多清洁使用array_diff由布拉德·肯特的意见建议。

$result = []; 
for ($i = count($first)-1; $i >= 1; $i--) { 
    $diff = array_diff($first[$i], $first[$i-1]); 
    if (!empty($diff)) 
     $result[$i] = $diff; 
}