Вот моя запись, простая и чистая ..
function array2xml($array, $xml = false){
if($xml === false){
$xml = new SimpleXMLElement('<root/>');
}
foreach($array as $key => $value){
if(is_array($value)){
array2xml($value, $xml->addChild($key));
}else{
$xml->addChild($key, $value);
}
}
return $xml->asXML();
}
header('Content-type: text/xml');
print array2xml($array);
Использование типа [version]
хорошо, но оно неизменно. Этот код разбивает его на массив, увеличивает третье число (Build) и создает строку в $ newfinale.
Обратите внимание, что это не проверяет наличие третьего (Build) значения. Это приведет к исключению, если $ финал равен '1.2'.
PS C:\> $finale = '2.3.4.5'
PS C:\> $a = $finale.split('.')
PS C:\> $a[2] = [int]$a[2] + 1
PS C:\> $newfinale = $a -join '.'
PS C:\> $newfinale
2.3.5.5
Причина 1.0.123 не в математике. Это ни целое число, ни двойное число. Это просто строка, которая содержит цифры и символы. Вот почему вы получаете ошибку.
См. Следующие файлы справки: About_Arithmetic_Operators .NET Math Class