|
| |
|
|
| |
для: yuri
(26.02.2007 в 14:53)
| | | и??? я непонимаю, в чем сложность написать вместо
$output=rubrics_parent();
|
$output = array();
rubrics_parent(&$output);
|
| |
| |
|
|
| |
|
|
| |
для: 1999
(24.02.2007 в 16:59)
| | | return не возвращает переменную, а возвращает значение.
<?
$output=rubrics_parent();
?>
|
| |
| |
|
|
| |
|
|
| |
для: ZuArt
(26.02.2007 в 10:07)
| | | Попробую отрисовать вид массива
<?
// корень
$out = array(
[0] = array( // 1 эл. корня
Id = Id;
Text = Text;
Ch = array( // массив дочерних элементов
[0] = array(
Id = Id;
Text = Text;
Ch = array();
);
[1] = array(
Id = Id;
Text = Text;
Ch = array();
);
);
)
[1] = array( // 2 элемент корня
Id = Id;
Text = Text;
Ch = array( // дочерние элементы
[0] = array(
Id = Id;
Text = Text;
Ch = array();
);
);
)
)
?>
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(26.02.2007 в 06:23)
| | | Попробуйте вот этот код...
<?
$out = array();
rubrics_parent(0, &$out);
function rubrics_parent($parent_id = 0, &$out)
{
global $db_options;
$sql = "SELECT * FROM ".$db_options['table_prefix']."rubrics WHERE parent_id = '".$parent_id."'";
$query = mysql_query( $sql ) or dc_error( 1 );
if ( mysql_num_rows( $query ) == 0 ) return;
$i = 0;
while ( $row = mysql_fetch_assoc( $query ) )
{
$out[$i]["Id"] = $row["Id"];
$out[$i]["Text"] = $row["Text"];
// тут просто читаются все свойства из строки, которые надо считать
$i++;
}
foreach($out as $key => $val)
{
$out[$key]["Ch"] = array();
rubrics_parent($val["Id"], &$out[$key]["Ch"])
};
}
?>
|
По окончании выполнения получите массив следующей структуры
каждый элемент являенся "хранилищем каждой строки" с доп. "полем" - $arr["Ch"] - в которое заносятся все дочерние элементы такой-же структуры.
А не работать исходная функция может по одной простой причине - рекурсивный вызов функции mysql_query выполняется раньше, чем обрабатывается предыдущий запрос - может из-за этого глюки | |
| |
|
|
| |
|
|
| |
для: 1999
(26.02.2007 в 01:15)
| | | Нет, Вы будете работать именно с этим массивом | |
| |
|
|
| |
|
|
| |
для: 1999
(26.02.2007 в 01:15)
| | | & все дело в нем... наверно) | |
| |
|
|
| |
|
|
| |
для: cheops
(26.02.2007 в 00:45)
| | | ну есть массив, он существует в основном теле программы
я его в функции объявляю глобальным и изменяю его значение. но после выполнения функции массив этот будет как и был до нее, поскольку изменения идут над копией.. ну как я понимаю | |
| |
|
|
| |
|
|
| |
для: 1999
(25.02.2007 в 15:55)
| | | В смысле? Не очень понятно... | |
| |
|
|
| |
|
|
| |
для: cheops
(25.02.2007 в 12:23)
| | | ...а значение его не изменится - я только что проверил | |
| |
|
|
| |
|
|
| |
для: 1999
(25.02.2007 в 01:36)
| | | Глобальный массив и его содержимое будет доступен и после окончания работы функции. | |
| |
|
|
|