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

You must be logged in to post a comment.