下面是我要比较的两个数组的示例。我想做的是比较是检查array1中是否存在来自array2的任何值并返回差值。
$array1 = ["8:00 am","8:30 am","10:00 am","11:00 am","11:45 am","1:30 pm","2:30 pm","3:30 pm","4:15 pm", "8:00 am","8:30 am","10:15 am","11:30 am","1:00 pm","2:30 pm","3:45 pm","8:00 am"];
$array2 = ["08:00 am","08:45 am","09:30 am","10:15 am","11:00 am","11:45 am","12:30 pm","01:15 pm", "02:00 pm", "02:45 pm","03:30 pm","04:15 pm","05:00 pm"];
$result = array_diff_assoc($array2,$array1);
var_dump时的结果:
array(13) {
[0]=>
string(8) "08:00 am"
[1]=>
string(8) "08:45 am"
[2]=>
string(8) "09:30 am"
[3]=>
string(8) "10:15 am"
[4]=>
string(8) "11:00 am"
[5]=>
string(8) "11:45 am"
[6]=>
string(8) "12:30 pm"
[7]=>
string(8) "01:15 pm"
[8]=>
string(8) "02:00 pm"
[9]=>
string(8) "02:45 pm"
[10]=>
string(8) "03:30 pm"
[11]=>
string(8) "04:15 pm"
[12]=>
string(8) "05:00 pm"
}
PHP将通过直接比较字符串来检查差异,这里肯定没有相同格式的输入。
解:
$array1
为标准格式,然后查找差异。array_diff
不array_diff_assoc
。
- 返回一个数组,其中包含array1中所有其他数组中不存在的所有条目
- 通过附加索引检查计算数组的差
$formatted_array = array_map(function($time){
return date("h:i a", strtotime($time) );
}, $array1);
$result = array_diff($array2, $formatted_array);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句