【问题标题】:PHP - Replace li of one array with anotherPHP - 用另一个数组替换一个数组的 li
【发布时间】:2020-03-17 11:25:19
【问题描述】:

我正在尝试使用ulli 创建一个树结构。无论数据库中是否有值,我都需要始终显示树结构。所以我创建了一个函数并制作了一个树形结构。现在,当我们在数据库中有这些节点的值时,我想替换 li 数据。这是我的数组生成的代码。

<li><a href="#">1</a>
        <ul><li><a href="#">2</a>
                <ul><li><a href="#">2.1</a>
                        <ul>
                                <li><a href="#">2.1.1</a>                 
                                </li>
                                <li><a href="#">2.1.2</a>   
                                </li>               
                        </ul>
                </li>
                <li>
                        <a href="#">2.2</a>
                        <ul>
                                <li><a href="#">2.2.1</a>                    
                                </li>
                                <li><a href="#">2.2.2</a>     
                                </li>                   
                        </ul>
                </li></ul>
                </li>
        </ul>
</li>

这是基本结构,当我们在另一个给出类似输出的数组中有值时,我想替换像 2.1, 2.1.1,2.2.2 这样的节点

<li>
        <a>
                <div class="card">
                        <div class="thumb">grey</div>
                        <div class="id">157</div>
                        <div class="username">okamikid1</div>
                </div>
        </a>
        <ul>
                <li><a><div class="card">
                        <div class="thumb">red</div>
                        <div class="id">158</div>
                        <div class="username">okamikid1</div>
                </div>
        </a>
        <ul></ul></li></ul>
</li>

基本上我有两个数组,两个数组都有li。我想用第二个数组替换第一个数组的li,并希望保留第一个数组中不存在的第二个数组的其他值。

这里是json形式的第一个数组的数组结构,这样你可以更清楚的看到结构。

{"157":{"id":"157","username":"okamikid1","parent_id":null,"children":[{"id":"158","parent_id":"157","username":"okamikid1","children":[]},{"id":"160","parent_id":"157","username":"okamikid2","children":[]}]}}

【问题讨论】:

  • “所以基本上我想用另一个数组的 li 替换一个数组的 li。” - 然而,你甚至还没有显示任何数组……显示代码,显示你尝试了什么。
  • 嗨@CBroe。您在上面看到的输出是我从数组中得到的。
  • 由于您还没有真正展示底层数据库结构、生成数组的 PHP 代码或它们的输出,所以我们还没有足够的内容继续介绍; 技术上答案可能是“好吧,删除第一个 HTML 块并用第二个替换它* - 你看到我们试图回答这个问题了吗?
  • 我正在使用各种功能生成li,无法在此处发布这些功能。基本上你可以从问题本身得到一个想法。我有两个数组,两个数组都有li。我想替换第二个数组中第一个数组的li,并希望保留第一个数组中不存在的其他值。

标签: php html arrays


【解决方案1】:

从您的 cmets 中,我假设您想显示一个包含数据库数据的树结构。此外,您希望 node 存在于树结构中,即使该值不存在于数据库中。

我建议以下解决方法。

假设你有两个像

这样的数组
$placeholders = [
    1 => [
        '1.1' => '1.1',
        '1.2' => '1.2',
        '1.3' => '1.3',
    ],
    2 => [
        '2.1' => '2.1',
        '2.2' => '2.2',
        '2.3' => '2.3',
    ],
    3 => [
        '3.1' => '3.1',
        '3.2' => '3.2',
        '3.3' => '3.3',
    ]
];

$placeholders 数组定义了树结构。

现在你有一些函数可以从数据库中获取以下格式的数据。

$data = [
    1 => [
        '1.1' => 'Node 1.1',
        '1.2' => 'Node 1.2',
        '1.3' => 'Node 1.3',
    ],
    2 => [
        '2.1' => 'Node 2.1',
        '2.2' => 'Node 2.2',
        '2.3' => 'Node 2.3',
    ]
];

现在,使用array_replace_recursive 函数将占位符替换为数据库中的实际值。

$data = array_replace_recursive($placeholders, $data);

然后打印树形结构,如:

foreach ($data as $base => $nodes)
{
    echo "<ul>";
    echo "<li>{$base}</li>";
    echo "<ul>";
    foreach ($nodes as $node) {
        echo "<li>{$node}</li>";
    }
    echo "</ul>";
    echo "</ul>";
}

【讨论】:

  • 嘿@invalid bot,我们可以直接用li 做点什么吗?我的意思是我们可以直接替换数组中的li。我使用了一个函数从数组项创建 ul li。
  • 不知道数组结构是不可能回答你的问题的。贴出数组结构。
  • 添加了有问题的数组结构。请检查。我正在从这个结构中创建 ul li。
  • 深入挖掘后,我将您的示例用作参考,并且可以正常工作。非常感谢老兄。
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 2020-12-21
  • 2015-05-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
相关资源
最近更新 更多