将多维PHP数组中父节点的值串在一起

将多维PHP数组中父节点的值串在一起,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一张工作场所及其家长ID的表格。每个父级可以有任意数量的级别 id workplace parent 1 WCHN 0 2 Acute Services 1 3 Paediatric Medicine 2 4 Surgical Services 2 5 Nursing and Midwifery 1 6 Casual Pool

我有一张工作场所及其家长ID的表格。每个父级可以有任意数量的级别

id    workplace              parent
1     WCHN                   0
2     Acute Services         1
3     Paediatric Medicine    2
4     Surgical Services      2
5     Nursing and Midwifery  1
6     Casual Pool            5
7     Clinical Practice      5
我需要创建一个单选输入,列出工作场所及其所有父工作场所,有点像这样:

<select>
    <option>WCHN > Acute Services > Paediatric Medicine</option>
    <option>WCHN > Acute Services > Surgical Services</option>
    <option>WCHN > Nursing and Midwifery > Casual Pool</option>
    <option>WCHN > Nursing and Midwifery > Clinical Practice</option>
</select>

我从这里到哪里才能将所有的父工作区放入选择选项?

如果没有返回值,我甚至不明白您是如何使用函数的

如果您的数组构建正确,并且按照您希望的方式构建,并且您询问如何将结果放入html选择字段,那么这就是最简单的部分

让我们尽快回到你的功能上来 . 函数中没有列出return$result,因此调用时不会返回任何内容

您需要将其添加到要启动的函数的末尾

然后,您将在数组中循环以开始html处理

$data = list_all_workplaces()
foreach( $data as $key => $value )
{
    $options = "<option value='{$key}'>{$value}</option>";
}
echo "<select>{$options}</select>";
$data=列出所有工作场所()
foreach($key=>$value形式的数据)
{
$options=“{$value}”;
}
回显“{$options}”;

我看不出您的代码将如何生成您所看到的
打印输出,因为您从未使用您创建的字符串。但是,沿着这些思路应该会让你走上正轨——它会生成你需要的字符串

for
循环替换为以下内容:

foreach ($temp as $i => $details)
{
    $parentID = $details['parent'];
    $tmpstring = ($details['workplace']);
    if ($parentID > 0 && isset($temp[$parentID]))
    {
        $temp[$parentID]['children'][] =& $temp[$i];
        while ($parentID > 0 && isset($temp[$parentID]))
        {
            $tmpstring = $temp[$parentID]['workplace']." > ".$tmpstring;
            $parentID = $temp[$parentID]['parent'];
        }
    }
    $result[] = $tmpstring;
}
正如@Syx所说,您也需要从函数中返回一些东西,可能是
$result
,然后使用它生成

谢谢标记,这太完美了(我将更新我的问题,以包括我在copypasta中错过的打印($result)调试:)
$data = list_all_workplaces()
foreach( $data as $key => $value )
{
    $options = "<option value='{$key}'>{$value}</option>";
}
echo "<select>{$options}</select>";
foreach ($temp as $i => $details)
{
    $parentID = $details['parent'];
    $tmpstring = ($details['workplace']);
    if ($parentID > 0 && isset($temp[$parentID]))
    {
        $temp[$parentID]['children'][] =& $temp[$i];
        while ($parentID > 0 && isset($temp[$parentID]))
        {
            $tmpstring = $temp[$parentID]['workplace']." > ".$tmpstring;
            $parentID = $temp[$parentID]['parent'];
        }
    }
    $result[] = $tmpstring;
}