Код: Выделить всё
$clauses = array(
[
'Fields' => ['Clause' => 'clause 1', 'Status' => 'Draft']
],
[
'Fields' => ['Clause' => 'clause 2', 'Status' => 'Draft'],
'SubClauses' => [
[
'Fields' => ['Clause' => 'clause 2_a', 'Status' => 'Draft'],
'SubClauses' => [
[
'Fields' => ['Clause' => 'clause 2_a_1', 'Status' => 'Draft']
],
[
'Fields' => ['Clause' => 'clause 2_a_2', 'Status' => 'Draft']
]
]
]
]
],
[
'Fields' => ['Clause' => 'clause 3', 'Status' => 'Draft']
]
);
echo PHP_EOL;
Код: Выделить всё
function htmlList ( $clauses, $depth = 0 ) {
if ( $depth == 0 ) {
echo '[list]';
} elseif ( $depth == 1 ) {
echo '';
} else {
echo '';
}
foreach ( $clauses as $key => $clause ) {
if ( isset($clauses[$key]['SubClauses']) ) {
echo ' [*]' . $clauses[$key]['Fields']['Clause'];
htmlList ( $clauses[$key]['SubClauses'], ++$depth );
} elseif ( isset($clauses[$key]['Fields']) ) {
echo ' ' . $clauses[$key]['Fields']['Clause'] . '';
}
}
$depth--;
echo ' ';
echo '[/list]';
}
htmlList ( $clauses );
echo PHP_EOL;
Я хочу сохранить HTML-код в шаблоне, а не помещать его в файлы кода, поэтому У меня есть функция в шаблоне, куда она может записать html.
Мне нужно изменить имя функции при цикле следующей статьи, поэтому я преобразовал это в замыкание и присвоил его переменной. Я передаю функцию, так как мне нужно, чтобы она выполнялась рекурсивно.
Код: Выделить всё
$htmlList = function ( $clauses, $depth = 0 ) use ( &$htmlList ) {
if ( $depth == 0 ) {
echo '[list]';
} elseif ( $depth == 1 ) {
echo '';
} else {
echo '';
}
foreach ( $clauses as $key => $clause ) {
if ( isset($clauses[$key]['SubClauses']) ) {
echo ' [*]' . $clauses[$key]['Fields']['Clause'];
$htmlList ( $clauses[$key]['SubClauses'], ++$depth );
} elseif ( isset($clauses[$key]['Fields']) ) {
echo ' ' . $clauses[$key]['Fields']['Clause'] . '';
}
}
$depth--;
echo ' ';
echo '[/list]';
};
$htmlList ( $clauses );
echo PHP_EOL;
Код: Выделить всё
$articles = array(
['Title' => 'title 1', 'Status' => 'Draft'],
['Title' => 'title 2', 'Status' => 'Draft'],
);
for ( $i = 0; $i < sizeof($articles); $i++ ) {
echo $articles[$i]['Title'] . PHP_EOL;
$htmlList = 'htmlList' . '_' . $i;
$$htmlList = function ( $clauses, $depth = 0 ) use ( &$$htmlList ) {
if ( $depth == 0 ) {
echo '[list]';
} elseif ( $depth == 1 ) {
echo '';
} else {
echo '';
}
foreach ( $clauses as $key => $clause ) {
if ( isset($clauses[$key]['SubClauses']) ) {
echo ' [*]' . $clauses[$key]['Fields']['Clause'];
$$htmlList ( $clauses[$key]['SubClauses'], ++$depth );
} elseif ( isset($clauses[$key]['Fields']) ) {
echo ' ' . $clauses[$key]['Fields']['Clause'] . '';
}
}
$depth--;
echo ' ';
echo '[/list]';
};
$$htmlList ( $clauses );
}
Как я могу преобразовать предложения в список HTML для каждой просматриваемой статьи?
Подробнее здесь: https://stackoverflow.com/questions/790 ... g-the-anon