如何在PHP中计算数组所有值的MD5
如何在PHP中计算以下数组的所有值的MD5:如何在PHP中计算数组所有值的MD5,php,arrays,array-merge,Php,Arrays,Array Merge,如何在PHP中计算以下数组的所有值的MD5: array(2) { ["cabecalho"]=> array(5) { ["identificacaoTransacao"]=> array(4) { ["tipoTransacao"]=> string(22) "VERIFICA_ELEGIBILIDADE" ["sequencialTransacao"]=> int(1)
array(2) {
["cabecalho"]=> array(5) {
["identificacaoTransacao"]=> array(4) {
["tipoTransacao"]=> string(22) "VERIFICA_ELEGIBILIDADE"
["sequencialTransacao"]=> int(1)
["dataRegistroTransacao"]=> string(10) "2014-05-22
["horaRegistroTransacao"]=> string(8) "17:00:00"
}
["origem"]=> array(1) {
["codigoPrestadorNaOperadora"]=> array(1) {
["CNPJ"]=> string(14) "XXXXXXXXXXXXXXXX"
}
}
["destino"]=> array(1) {
["codigoPrestadorNaOperadora"]=> array(1) {
["CNPJ"]=> string(14) "XXXXXXXXXXXX"
}
}
["versaoPadrao"]=> string(7) "2.02.03"
["identificacaoSoftwareGerador"]=> array(3) {
["nomeAplicativo"]=> string(10) "XXXXXXXXXX"
["versaoAplicativo"]=> string(6) "V1.0.0"
["fabricanteAplicativo"]=> string(27) "XXXXXXXXXXXXXX"
}
}
["verificaElegibilidade"]=> array(2) {
["dadosPrestador"]=> array(2) {
["identificacao"]=> array(1) {
["codigoPrestadorNaOperadora"]=> string(8) "XXXXXXXXX"
}
["nomeContratado"]=> string(26) "XXXXXXXXXXXXXX"
}
["dadosBeneficiario"]=> array(3) {
["numeroCarteira"]=> string(9) "XXXXXXXXXX"
["nomeBeneficiario"]=> string(22) "XXXXXXXXXXXXXXXXXX"
["nomePlano"]=> string(24) "MEDIAL 300 RM OR QC PJCE"
}
}
}
我只想说:
$hash = md5(serialize($array));
要计算多维数组的MD5哈希,请执行以下操作:
$hash=MD5(serialize($arr))
您需要组合使用函数md5()
,serialize()
。还有array\u multisort()
因此,具有相同键和值但顺序不同的数组将给出相同的哈希值
$hash = md5(serialize(array_multisort($sorted_array)));
。。。
$dom=新的DOMDocument;
$dom->loadXML($hash);
$mensagematis='';
$output=array();
$els=$objDom->getElementsByTagName('*');
对于($i=0;$i长度;$i++){
如果(!$els->item($i)->hasChildNodes()){
}elseif($els->item($i)->firstChild->nodeType==3){
$tmp=$els->item($i)->textContent;
如果(预替换('/\s+/','$tmp)){
$tmp=preg_replace('/\s+/','',$tmp);(“\n”,'',$tmp);
}
$mensagemTISS=$mensagemTISS($tmp);
}
}
echo“
哈希:”.$mensagematis.“
”;
返回md5($Mensagematis);
您的问题标题的目的是告诉我们有关问题的信息,而不是您对问题的主观严重性或感知到的有用性。在计算MD5之前序列化整个数组。此MD5的目的是什么?如果有另一个数组具有相同的元素,但顺序不同,该怎么办?阵列是否应该保持不变?如果该数组包含其他数组,那么应该对它们进行求值吗?$hash=md5(serialize($arr))
您的意思是创建每个值的散列,留下许多散列,还是将整个数组作为一个整体进行散列?
$mensagemTISS = '';
$output = array();
$els = $objDom->getElementsByTagName('*');
for($i=0;$i<$els->length;$i++) {
if(! $els->item($i)->hasChildNodes() ) {
} elseif ($els->item($i)->firstChild->nodeType == 3 ) {
$tmp = $els->item($i)->textContent;
if ( preg_replace('/\s+/', '', $tmp) ) {
$tmp = preg_replace('/\s+/', '', $tmp);("\n", "", $tmp);
}
$mensagemTISS = $mensagemTISS . ($tmp);
}
}
echo '<hr>HASH: <pre>'.$mensagemTISS.'</pre><hr>';
return md5($mensagemTISS);