-----
Phần 82. Kĩ
thuật đệ quy 2
Đây là clip số 90:
Hiển thị menu đa cấp trong selectbox:
[index.php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>PHP</title>
<link
rel="stylesheet" href="style.css">
<script
src="js/jquery.js"></script>
</head>
<body>
<?php
$menu = array();
$menu[] = array('id'
=> 1, 'name' => 'Home', 'parent' => 0);
$menu[] = array('id'
=> 2, 'name' => 'About', 'parent' => 0);
$menu[] = array('id'
=> 3, 'name' => 'News', 'parent' => 0);
$menu[] = array('id'
=> 4, 'name' => 'Products', 'parent' => 0);
$menu[] = array('id'
=> 5, 'name' => 'Contact', 'parent' => 0);
$menu[] = array('id'
=> 6, 'name' => 'Tin trong nước', 'parent' => 3);
$menu[] = array('id'
=> 7, 'name' => 'Tin quốc tế', 'parent' => 3);
$menu[] = array('id'
=> 8, 'name' => 'Công nghệ', 'parent' => 6);
$menu[] = array('id'
=> 9, 'name' => 'Giáo dục', 'parent' => 6);
$menu[] = array('id'
=> 10, 'name' => 'Y tế', 'parent' => 6);
$menu[] = array('id'
=> 11, 'name' => 'Education', 'parent' => 7);
$menu[] = array('id'
=> 12, 'name' => 'Breaking news', 'parent' => 7);
$menu[] = array('id'
=> 13, 'name' => 'Software', 'parent' => 4);
function
deQuyLevel($array, $parent, $level, &$newArray) {
// điều kiện dừng
if (count($array) >
0) {
foreach ($array as
$key => $value) {
if
($value['parent'] == $parent) {
$value['level'] =
$level;
$newArray[] =
$value;
unset($array[$key]);
$newParent =
$value['id'];
deQuyLevel($array, $newParent, $level + 1, $newArray);
}
}
}
}
$menu1 = array();
deQuyLevel($menu, 0, 1,
$menu1);
function createSelectbox ($array, $selected = 0, $name, $style =
null, $size = 0) {
$xhtml = '<select
name="'. $name . 'id="' . $name . '" style="' . $style .
'" size="' . $size . '">';
foreach($array as $key
=> $value) {
$strSelected = '';
if ($value['id'] ==
$selected) {
$strSelected =
'selected="selected"';
}
if ($value['level']
== 1) {
$xhtml .=
'<option value="' . $value['id'] . '"' . $strSelected . '>+' .
$value['name'] . '</option>';
} else {
$name =
str_repeat(' ', 4 * ($value['level'] - 1)) . '-' . $value['name'];
$xhtml .=
'<option value="' . $value['id'] . '"' . $strSelected . '>' .
$name . '</option>';
}
}
$xhtml .=
'</select>';
return $xhtml;
}
echo createSelectbox($menu1,
1, 'selectbox', 'min-width: 200px; padding: 3px; margin: 10px', 15);
?>
</body>
</html>
Đây là clip số 91:
Tạo menu đa cấp sử dụng ul, li.
Lưu lại mã nguồn để tham khảo.
[index.php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>PHP</title>
</head>
<body>
<?php
$menu = array();
$menu[] = array('id'
=> 1, 'name' => 'Home', 'parent' => 0);
$menu[] = array('id'
=> 2, 'name' => 'About', 'parent' => 0);
$menu[] = array('id'
=> 3, 'name' => 'News', 'parent' => 0);
$menu[] = array('id'
=> 4, 'name' => 'Products', 'parent' => 0);
$menu[] = array('id'
=> 5, 'name' => 'Contact', 'parent' => 0);
$menu[] = array('id'
=> 6, 'name' => 'Tin trong nước', 'parent' => 3);
$menu[] = array('id'
=> 7, 'name' => 'Tin quốc tế', 'parent' => 3);
$menu[] = array('id'
=> 8, 'name' => 'Công nghệ', 'parent' => 6);
$menu[] = array('id'
=> 9, 'name' => 'Giáo dục', 'parent' => 6);
$menu[] = array('id'
=> 10, 'name' => 'Y tế', 'parent' => 6);
$menu[] = array('id'
=> 11, 'name' => 'Education', 'parent' => 7);
$menu[] = array('id'
=> 12, 'name' => 'Breaking news', 'parent' => 7);
$menu[] = array('id'
=> 13, 'name' => 'Software', 'parent' => 4);
function
deQuyMenu($array, $parent, &$newString) {
// điều kiện dừng
if (count($array) >
0) {
$newString .= '<ul>';
foreach ($array as
$key => $value) {
if
($value['parent'] == $parent) {
$value['name'] =
'<a href="targetPage.php?targetID=' . $value['id'] . '">' .
$value['name'] . '</a>';
$newString .=
'<li>' . $value['name'];
unset($array[$key]);
$newParent =
$value['id'];
deQuyMenu($array,
$newParent, $newString);
$newString .=
'</li>';
}
}
$newString .=
'</ul>';
}
}
deQuyMenu($menu, 0,
$newString);
$newString = str_replace('<ul></ul>',
'', $newString);
echo $newString;
?>
</body>
</html>
Đây là clip số 92:
Hiển thị nội dung thư mục bằng hàm đệ quy.
[index.php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>PHP</title>
</head>
<body>
<?php
function showAll($path,
&$newString){
$data = scandir($path);
$newString .=
'<ul>';
foreach ($data as $key
=> $value) {
if ($value != '.'
&& $value != '..') {
$dir = $path . '/'
. $value;
if (is_dir($dir)) {
$newString .=
'<li>'. 'D: ' . $value;
showAll($dir,
$newString);
$newString .=
'</li>';
} else {
$newString .=
'<li>' . 'F: ' . $value . '</li>';
}
}
}
$newString .=
'</ul>';
}
showAll('.', $newString);
echo $newString;
?>
</body>
</html>
-----------
Cập nhật [16/9/2020]
-----------
Xem thêm: