POSTからのマルチディムアレイがあります
[key:value key:value[array one {key1:value, key2:value}{key1:value, key2:value}][array two{key1:value, key2:value}...] key:value key:value]
ネストされた配列を使用して xml エントリを生成し、次のように識別します。
foreach ($_POST as $key){
if (is_array($key)){
foreach ($key as $key2 => $value){
$array_type = substr($key2, 0,2);
if ($array_type == 'ec'){
$xml .= '<tns:PersonNamesInfoType>';
if ($key2 == 'ec_fname'){
$xml .= '<GivenName>'.$value.'</GivenName>';
//<MidInitial>MidInitial</MidInitial>
}
else if ($key2 == 'ec_lname'){
$xml .= '<FamilyName>'.$value.'</FamilyName>';
//</tns:PersonNamesInfoType>
}
else if ($key2 == 'ec_rel'){
$xml .= ' <Relationship>'.$value.' </Relationship>';
// <tns:PhoneInfoType>
//<tns:PhoneType></tns:PhoneType>
}
else if ($key2 == 'ec_ophone'){
$xml .= '<Number>'.$value.'</Number>';
}
else {
$xml .= '<IsPrimary>'.$value.'</IsPrimary>';
}
$xml .= '</tns:PersonNamesInfoType>';
}
else if($array_type == 've') {
$xml .= '<tns:AutoInfoType>';
foreach ($key as $key2 => $value){
if ($key2 == 'veh_year'){
$xml .= '<Year>'.$value.'</Year>';
}
else if ($key2 == 'veh_make'){
$xml .= '<Make>'.$value.'</Make>';
}
else if ($key2 == 'veh_model'){
$xml .= '<Model>'.$value.'</Model>';
}
else if ($key2 == 'veh_plate'){
$xml .= '<Plate>'.$value.'</Plate>';
}
else if ($key2 == 'veh_state'){
$xml .= '<tns:StateType>'.$value.'</tns:StateType>';
}
else {$xml .= '<IsPrimary>'.$value.'</IsPrimary>';}
}
$xml .= '</tns:AutoInfoType>';
}
}
}
}
これにより、誤った結果が生成されます
<tns:PersonNamesInfoType>
<GivenName>'.$value.'</GivenName>
</tns:PersonNamesInfoType>
<tns:PersonNamesInfoType>
<FamilyName>'.$value.'</FamilyName>
</tns:PersonNamesInfoType>
Instead of:
<tns:PersonNamesInfoType>
<GivenName>'.$value.'</GivenName>
<FamilyName>'.$value.'</FamilyName>
</tns:PersonNamesInfoType>
最初のキー値に基づいて各配列のデータを分離するためのより良い解決策は何ですか?
1[ec_fname]
1[veh_lname]
2[ec_fname]
2[veh_lname]