比较关联数组值和返回不同的值
问题描述:
下面我有这样一个关联数组:比较关联数组值和返回不同的值
<?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,
)
);
?>
答
我认为这将解决您的问题
<?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>';
?>
如果是这样,请喜欢或低于
答
这是一点点,你要搜索的内容?
$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语句,你至少可以比较你想要比较的东西。祝你好运!。
答
别人的评论,我觉得它有很多清洁使用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;
}
http://php.net/manual/en/function.array-diff.php –