Мой ответ, собрав ответы других. Это должно исправить для отказа от компенсации числовых клавиш:
function array_to_xml($array, $root, $element) {
$xml = new SimpleXMLElement("<{$root}/>");
foreach ($array as $value) {
$elem = $xml->addChild($element);
xml_recurse_child($elem, $value);
}
return $xml;
}
function xml_recurse_child(&$node, $child) {
foreach ($child as $key=>$value) {
if(is_array($value)) {
foreach ($value as $k => $v) {
if(is_numeric($k)){
xml_recurse_child($node, array($key => $v));
}
else {
$subnode = $node->addChild($key);
xml_recurse_child($subnode, $value);
}
}
}
else {
$node->addChild($key, $value);
}
}
}
Функция array_to_xml()
предполагает, что сначала массив состоит из числовых клавиш. Если у вашего массива был начальный элемент, вы бы сбросили инструкции foreach()
и $elem
из функции array_to_xml()
и просто передали $xml
.
Стандарт не определяет, как должна быть реализована функция exp
(или любая другая функция математической библиотеки 1 sup>), таким образом, каждая реализация библиотеки может использовать разные вычислительные методы.
Например, библиотека Android C ( bionic ) использует приближение exp (r) специальной рациональной функцией на интервале [0,0.34658] и сокращает результат. [ 117]
Вероятно, библиотека Microsoft использует другой вычислительный метод (не может найти информацию о нем), что приводит к другим результатам.
Кроме того, библиотеки могут использовать стратегию динамической загрузки (т.е. загрузить .dll
, содержащую фактическую реализацию), чтобы использовать различные аппаратные специфические функции, что делает его еще более непредсказуемым, даже при использовании одного и того же компилятора. [ 119]
Чтобы получить одинаковую реализацию на обеих (всех) платформах, вы можете использовать собственную реализацию функции exp
, не полагаясь на разные реализации разных библиотек.
Примите во внимание, что, возможно, процессоры используют разные подходы к округлению, что также привело бы к другому результату.
1 sup> Есть некоторые исключения из них, например, функция sqrt или std :: fma и некоторые функции округления и базовая арифметика. операции