PHP : Parsing an complex array
<?php
ini_set('display_errors', E_ALL);
ini_set('memory_limit', '2048M');
ini_set('max_execution_time', '0');
include_once("xml2array.php"); //include class file
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("db_zorg") or die(mysql_error());
global $db;
$db=true; //true if you want to run query
$filename="~ALL_BHC~.xml";
$content = file_get_contents($filename); //Get the xml data as string
// $content = iconv("utf-16","utf-8",$content);
$content=str_replace("®","",$content);
$content=str_replace("- <","<",$content);
echo "<pre>";
$clsXML = new XMLToArray;
//Create an instance of class XMLToArray
$data= $clsXML->xml2array($content,1); //(String content, 1 or 0) If this is 0 the function will get the array value without attributes as well as the tag values.
function getValue($arr) {
$value="";
if(isset($arr['value']) && $arr['value']!='') {
$value=value(utf8_decode($arr['value']));
}
return $value;
}
// If this is 1 the function will get the array value with attributes.
$bhc=array();
$bhc=$data['MEDIQUEST']['BHC']; //Getting Member array
// echo "<pre>Arr(arr) = "; print_r($bhc); echo "</pre>"; exit;
$ctr = 1;
foreach($bhc as $bhcChild) {
$bhcId=$bhcChild['attr']['BHCID'];
// if($bhcId != '54100') { $ctr++; continue; } //-- mjv
$check_member = "SELECT id FROM members where bhcid = '".$bhcId."'";
$rs_check_member = mysql_query($check_member);
$count_member = mysql_num_rows($rs_check_member);
$row = mysql_fetch_assoc($rs_check_member);
$member_id = $row['id'];
if($member_id <= 0) { echo "BHCID-".$bhcId; continue; }
$bhcChildArray=array();
foreach($bhcChild as $k=>$v) {
$bhcChildArray[strtolower($k)]=getValue($v);
}
$arr = $bhcChild;
echo "<br/><br/>Counter > $ctr -- BHCID > ".$bhcId."($member_id) -- ".$arr['NAAM']['value'];
if(isset($arr['SPECIALISMEN'])) {
$arr_speciality = $arr['SPECIALISMEN'];
foreach($arr_speciality as $key2 => $speciality) {
foreach($speciality as $key3 => $val3) {
$specialist_id = 0;
if(isset($val3['attr'])) {
$specialismeId = $val3['attr']['SPECIALISMEID'];
// echo "<br/>-----Speciality If > $specialismeId($member_id) -- ".$val3['NAAM']['value'];
$sql_check_speciality = "SELECT id FROM specialities where member_id = '".$member_id."' AND specialismeid = '".$specialismeId."'";
$rs_check_speciality = mysql_query($sql_check_speciality);
$count_check_speciality = mysql_num_rows($rs_check_speciality);
if($count_check_speciality > 0) {
$row_check_speciality = mysql_fetch_assoc($rs_check_speciality);
$specialist_id = $row_check_speciality['id'];
}
}
else {
if(!isset($val3['SPECIALISMEID'])) { continue; }
$specialismeId = $val3['SPECIALISMEID'];
// echo "<br/>-----Speciality Else > $specialismeId($member_id) -- ".$speciality['NAAM']['value'];
$sql_check_speciality = "SELECT id FROM specialities where member_id = '".$member_id."' AND specialismeid = '".$specialismeId."'";
$rs_check_speciality = mysql_query($sql_check_speciality);
$count_check_speciality = mysql_num_rows($rs_check_speciality);
if($count_check_speciality > 0) {
$row_check_speciality = mysql_fetch_assoc($rs_check_speciality);
$specialist_id = $row_check_speciality['id'];
}
// echo "<pre>Arr(arr) = "; print_r($speciality); echo "</pre>"; exit;
}
if((isset($val3['AANDOENINGEN'])) && ($specialist_id > 0)) {
$treatments = $val3['AANDOENINGEN'];
foreach($treatments as $key4 => $treatment) {
if(isset($treatment['attr'])) {
$treatment_id = $treatment['attr']['AANDOENINGID'];
// echo "<br/>----------Treatment MultiS > $treatment_id($specialist_id) -- ".$treatment['NAAM']['value'];
getTreatment($treatment, $specialismeId, $specialist_id, $member_id);
// echo "<pre>Arr(arr) = "; print_r($treatment); echo "</pre>";
}
foreach($treatment as $key5 => $val5) {
if(isset($val5['attr'])) {
$treatment_id = $val5['attr']['AANDOENINGID'];
// echo "<br/>-----------Treatment MultiM > $treatment_id($specialist_id) -- ".$val5['NAAM']['value'];
getTreatment($val5, $specialismeId, $specialist_id, $member_id);
}
}
}
}else {
if($specialist_id > 0) {
if(isset($speciality['AANDOENINGEN']['AANDOENING'])) {
$treatments = $speciality['AANDOENINGEN']['AANDOENING'];
if(isset($treatments['attr'])) {
$treatment_id = $treatments['attr']['AANDOENINGID'];
// echo "<br/>----------Treatment Single > $treatment_id($specialist_id) -- ".$treatments['NAAM']['value'];
getTreatment($treatments, $specialismeId, $specialist_id, $member_id);
}
else {
foreach($treatments as $key4 => $treatment) {
if(isset($treatment['attr'])) {
$treatment_id = $treatment['attr']['AANDOENINGID'];
// echo "<br/>----------Treatment MultiS2 > $treatment_id($specialist_id) -- ".$treatment['NAAM']['value'];
getTreatment($treatment, $specialismeId, $specialist_id, $member_id);
// echo "<pre>Arr(arr) = "; print_r($treatment); echo "</pre>";
}
}
}
}
}
}
// Ends -- isset($val3['AANDOENINGEN']
}
}
}
$ctr++;
}
//Outer foreach end
mysql_query("update treatments set title = 'Reumatoide artritis' where title = 'Reumato�¯de artritis'"); //-- Reumatoïde artritis
mysql_query("update treatments set title = 'Langzaamwerkende schildklier (Hypothyreoidie)' where title = 'Langzaamwerkende schildklier (Hypothyreo�¯die)'"); //-- Langzaamwerkende schildklier (Hypothyreoïdie)
mysql_query("update treatments set title = 'Paniekstoornissen en fobieen' where title = 'Paniekstoornissen en fobie�«n'"); //-- Paniekstoornissen en fobieën
mysql_query("update treatments set title = 'Rontgen onderzoek' where title = 'R�¶ntgen onderzoek'"); //-- Röntgen onderzoek
mysql_query("update treatments set title = 'Snelwerkende schildklier (Hyperthyreoidie)' where title = 'Snelwerkende schildklier (Hyperthyreo�¯die)'"); //-- Snelwerkende schildklier (Hyperthyreoïdie)
mysql_query("update treatments set title = 'Sjogren, syndroom van' where title = 'Sj�¶gren, syndroom van'"); //-- Sjögren, syndroom van
echo "<br/><br>Total Records: ".count($bhc);
function getTreatment($aandoeningChild, $specialismeid, $specialist_id, $member_id) {
global $db;
$aandoeningChildArray=array();
$aandoeningId=$aandoeningChild['attr']['AANDOENINGID'];
foreach($aandoeningChild as $key=>$val)
{
if($key=='attr') continue;
$aandoeningChildArray[strtolower($key)]=getValue($val);
}
extract($aandoeningChildArray);
//INSERT DATA IN THE TREATMENT TABLE
$sql_check_treatment = "SELECT id FROM treatments where specialismeid = '".$specialismeid."' AND aandoeningid = '".$aandoeningId."' AND clinic_id = '".$member_id."'";
$rs_check_treatment = mysql_query($sql_check_treatment);
$count_check_treatment = mysql_num_rows($rs_check_treatment);
if($count_check_treatment > 0) {
$sql="UPDATE treatments set
title='".$naam."',
specialist_id='".$specialist_id."',
wachttijdpoli='".$wt_polikliniek."',
wt_behandeling='".$wt_behandeling."',
wachttijdopname='".$wt_retro."',
wachttijddag='".$wt_status."',
kwic_eindscore='".$kwic_eindscore."',
kwic_septielscore='".$kwic_septielscore."',
kwic_transpasp='".$kwic_transpasp."',
kwic_transpaspcat='".$kwic_transpaspcat."',
rodevlag='".$rodevlag."',
rodevlagtoelichting='".$rodevlagtoelichting."',
modified='".date("Y-m-d H:i:s")."'
WHERE aandoeningid='".$aandoeningId."' AND specialismeid = '".$specialismeid."' AND clinic_id = '".$member_id."'";
}
else {
$sql="INSERT INTO treatments set
title='".$naam."',
clinic_id='".$member_id."',
specialist_id='".$specialist_id."',
specialismeid='".$specialismeid."',
wachttijdpoli='".$wt_polikliniek."',
wt_behandeling='".$wt_behandeling."',
wachttijdopname='".$wt_retro."',
wachttijddag='".$wt_status."',
kwic_eindscore='".$kwic_eindscore."',
kwic_septielscore='".$kwic_septielscore."',
kwic_transpasp='".$kwic_transpasp."',
kwic_transpaspcat='".$kwic_transpaspcat."',
rodevlag='".$rodevlag."',
rodevlagtoelichting='".$rodevlagtoelichting."',
created='".date("Y-m-d H:i:s")."',
modified='".date("Y-m-d H:i:s")."',
aandoeningid='".$aandoeningId."'";
}
if($db) {
// echo $sql;
mysql_query($sql);
}
return '';
}
### Converts Database text value HTML compatible for text fields
### Don't use this function in case of getting values from textarea or editor as it strip the tags
function value($val = '', $default = '', $arr = '') {
$numargs = func_num_args(); // call_user_func_array - Call a user function given with an array of parameters
if(gettype($arr) == 'object') {
$arr = get_object_vars($arr);
}
if($numargs > 2) {
if(is_array($arr) && (count($arr) > 0)) {
if( (!empty($val)) && (isset($arr[$val])) && (trim($arr[$val] != '')) ) {
return get_absolute_value($arr[$val], $default);
}
}
return get_absolute_value($default);
}
return get_absolute_value($val, $default);
}
### Converts Database text value HTML compatible for text fields
function get_absolute_value($val ='', $default = '') {
if(!empty($val)) {
if(is_string($val) ) {
// For Textbox and other fields
return htmlspecialchars(strip_tags(stripslashes(trim($val))), ENT_QUOTES);
}
return $val;
}
else {
if( ($val === 0) || ($val === '0') ) {
return $val;
}
return $default;
}
return false;
}
?>

Processing your request, Please wait....
No Responses to “PHP : Parsing an complex array”
Comments (Your Comments)
Leave a Reply