gpt4 book ai didi

php - 从 PHP 动态排序 HTML 输出

转载 作者:可可西里 更新时间:2023-11-01 13:42:46 25 4
gpt4 key购买 nike

我对 PHP 有基本的了解,但我觉得我想做的事情可以用更简单的方式完成。我正在使用 PHP 显示 Wordpress 主题的 HTML 内容。我希望用户能够确定 HTML“ block ”的显示顺序。目前我正在使用 if/elseif 设置。这是一个过于简化的示例:

if ( $layout == 'layout_one' ) {
echo '<div class="header">Header</div>';
echo '<div class="content">Content</div>';
echo '<div class="footer">Footer</div>';
} elseif ( $layout == 'layout_two' ) {
echo '<div class="content">Content</div>';
echo '<div class="header">Header</div>';
echo '<div class="footer">Footer</div>';
} elseif ( $layout == 'layout_three' ) {
echo '<div class="footer">footer</div>';
echo '<div class="header">Header</div>';
echo '<div class="content">Content</div>';
}

现在,由于布局选项(排列)的剪切数量,这种技术变得绝对有用。所以在我看来,你会为每个 HTML 内容 block 编写一个单独的函数,然后以某种方式有另一个函数以用户指定的顺序呈现它们。或者可能将所有 block 放入一个数组中,然后根据布局选择对数组重新排序...

无论如何,我在如何实际执行此操作方面遇到了瓶颈。任何指导将不胜感激。谢谢

最佳答案

这不是一个微不足道的问题;随着布局部分数量的增长,它变得越来越难以维护。不过,我将尝试为此提供一个“简单”的解决方案。

假设您有 3 个部分,如您的示例所示。然而,这应该适用于 N 个部分。您将它们设置在一个数组中:

$parts = [
0 => '<div class="header">Header</div>',
1 => '<div class="content">Content</div>',
2 => '<div class="footer">Footer</div>'
]

然后您需要确定性的组合。这是我想出的,虽然我确定有 some algorithm to do all possible combinations (算法的一个例子)所以这一步是自动的:

$layout_combinations = [
0 => [0, 1, 2],
1 => [0, 2, 1],
2 => [1, 0, 2],
3 => [1, 2, 0],
4 => [2, 0, 1],
5 => [2, 1, 0]
];

你真的有 $layout == 'layout_one' 吗?我们必须转换它:

$layout_number = [
'layout_one' => 0,
'layout_two' => 1,
'layout_three' => 2,
'layout_four' => 3,
'layout_five' => 4,
'layout_six' => 5
];

要使用它,在定义上面的部分之后,只需执行以下操作:

$layout = 'layout_four';

if (!array_key($layout, $layout_number))
throw new Exception('Invalid layout');

$layout_number = $layout_number[$layout];

$layout_structure = $layout_combinations[$layout_number];

foreach ($layout_structure as $part_number) {
echo $parts[$part_number];
}

主要优点是它非常容易扩展。如果你想放另一部分,只需将它添加到$parts 数组,添加相应的新$layout_combinations 并向“english => number”转换。

注意:如果 $layout = 4 而不是 $layout = 'layout_four',则可以阻止一个步骤。这是非常可取的,因为它允许您使其自动化,只需在 $parts 数组的末尾添加一个元素即可。

关于php - 从 PHP 动态排序 HTML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com