Вячеслав Кравче
Новичок
неработает массив в подпрограмме
Добрый день..
есть вот такой кусок программы..
$depth = 0;
$tree = array();
$tree['name'] = "root";
$stack[] = &$tree;
function startElement($parser, $name, $attrs) {
global $depth;
global $stack;
global $tree;
$element = array();
foreach ($attrs as $key => $value) {
$element[strtolower($key)]=$value;
}
end($stack);
$stack[key($stack)][strtolower($name)] = &$element;
$stack[strtolower($name)] = &$element;
$depth++;
}
если программу (целиком) запускать прямо, в виде отдельного php файла, то все работает нормально...
как только я пытаюсь ее оформить как функцию,
function parsexml () {
$depth = 0;
$tree = array();
$tree['name'] = "root";
$stack[] = &$tree;
function startElement($parser, $name, $attrs) {
global $depth;
global $stack;
global $tree;
$element = array();
foreach ($attrs as $key => $value) {
$element[strtolower($key)]=$value;
}
end($stack); // эта строка на которую грешит php
$stack[key($stack)][strtolower($name)] = &$element;
$stack[strtolower($name)] = &$element;
$depth++;
}
... и далее...
то при запуске появляется ошибка
end(): Passed variable is not an array or object in
т.е. как я понял , что переменная stack не является массивом
global $stack; - в функциях как то поиному работают ?
помогите справиться с проблемой...
Добрый день..
есть вот такой кусок программы..
$depth = 0;
$tree = array();
$tree['name'] = "root";
$stack[] = &$tree;
function startElement($parser, $name, $attrs) {
global $depth;
global $stack;
global $tree;
$element = array();
foreach ($attrs as $key => $value) {
$element[strtolower($key)]=$value;
}
end($stack);
$stack[key($stack)][strtolower($name)] = &$element;
$stack[strtolower($name)] = &$element;
$depth++;
}
если программу (целиком) запускать прямо, в виде отдельного php файла, то все работает нормально...
как только я пытаюсь ее оформить как функцию,
function parsexml () {
$depth = 0;
$tree = array();
$tree['name'] = "root";
$stack[] = &$tree;
function startElement($parser, $name, $attrs) {
global $depth;
global $stack;
global $tree;
$element = array();
foreach ($attrs as $key => $value) {
$element[strtolower($key)]=$value;
}
end($stack); // эта строка на которую грешит php
$stack[key($stack)][strtolower($name)] = &$element;
$stack[strtolower($name)] = &$element;
$depth++;
}
... и далее...
то при запуске появляется ошибка
end(): Passed variable is not an array or object in
т.е. как я понял , что переменная stack не является массивом
global $stack; - в функциях как то поиному работают ?
помогите справиться с проблемой...