我目前正在使用 Troy Hunt 从其网站Have I been pwned?
提供的API构建新工具API地址的输出提供了一个易于搜索JSON数组的漏洞,但在每个数组中还有另一个名为“DataClasses”的数组,它可能包含“电子邮件地址”或“用户名”等值。有时当用户遇到多个违规行为时,显然会有多个“DataClasses”数组通过。
我的问题是,如果有多个阵列,我将如何比较每个阵列以找出它们的共同点。所以我可以输出'我们在3个漏洞中的电子邮件地址中找到'或类似的东西。我怎么能这样做?我使用的for循环如下所示:
$dc = count($fs[$i]['DataClasses']);
for($j=0;$j<$dc;$j++) {
$datclass = $fs[$i]['DataClasses'][$j];
}
有人有什么想法吗?以防有人问,是的,这是for循环中的for循环,就像我说的'DataClasses'是输出的原始JSON数组中的一个数组,所以只是为了澄清一个例子:
['DataClasses'][0]
可以等于'电子邮件地址'
答案 0 :(得分:0)
喜欢这样吗?
$fs = json_decode($jsonString, true);
$dc = array_count_values(call_user_func_array('array_merge', array_map(function($x) {return $x['DataClasses'];}, $fs)));
var_dump($dc);
输出:
array(7) {
["Email addresses"]=>
int(3)
["IP addresses"]=>
int(1)
["Names"]=>
int(1)
["Passwords"]=>
int(3)
["Password hints"]=>
int(1)
["Usernames"]=>
int(2)
["Dates of birth"]=>
int(1)
}