Php 在数组foreach期间连接字符串,以跟上父值
我有一个多维值数组,我正在尝试解析并创建一个父值字符串 我的理想字符串是:Php 在数组foreach期间连接字符串,以跟上父值,php,arrays,Php,Arrays,我有一个多维值数组,我正在尝试解析并创建一个父值字符串 我的理想字符串是: Adam Beth Charlie_ Charlie_Mike Charlie_Nancy Charlie_Oscar_ Charlie_Oscar_Peter Charlie_Oscar_Paul Danny 然而,我越来越 Adam Beth Charlie Charlie_Mike_ Charlie_Mike_Nancy_ Char
Adam
Beth
Charlie_
Charlie_Mike
Charlie_Nancy
Charlie_Oscar_
Charlie_Oscar_Peter
Charlie_Oscar_Paul
Danny
然而,我越来越
Adam
Beth
Charlie
Charlie_Mike_
Charlie_Mike_Nancy_
Charlie_Mike_Nancy_Oscar
Charlie_Mike_Nancy_Oscar_Peter_
Charlie_Mike_Nancy_Oscar_Peter_Paul_
CharlieDanny_
如您所见,当找到新数组时,父值没有清除。此外,Danny
数组是顶级数组项,不应附加Charlie
我做错了什么
这是我的密码:
$sufix = "_";
function renderNames(array $data, $name = "")
{
$html = '<ul>';
foreach ($data as $item) {
$html .= '<li>';
if (array_key_exists('children', $item)) {
$name .= $item['name'];
$html .= $name . "<br/>";
$html .= renderNames($item['children'], $name . $sufix);
} else {
if (strlen($name) <= 0) {
$name = $item['name'];
$html .= $name . "<br/>";
$name = "";
} else {
$name .= $item['name'] . $sufix;
$html .= $name . "<br/>";
}
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}
函数renderNames(数组$data,$name=”“)
{
$sufix=“"”;
$html=“”;
foreach($数据作为$项){
$html.='- ';
如果(数组\键\存在('children',$item)){
$name.=$item['name'];
$html.=$name.“
\n”;
$html.=renderNames($item['children',$name.$sufix);
}否则{
if(strlen($name)函数renderNames(数组$data,$name=”“)
{
$sufix=“"”;
$html=“”;
foreach($数据作为$项){
$html.='- ';
如果(数组\键\存在('children',$item)){
$name.=$item['name'];
$html.=$name.“
\n”;
$html.=renderNames($item['children',$name.$sufix);
}否则{
如果(strlen($name)代码的问题是您正在更改每个子级的名称
,这会导致意外的结果。此外,您可以保存一些条件并以更简单的方式编写代码,如下所示:
function renderNames(array $data, $name = "")
{
$sufix = "_";
$html = '<ul>';
foreach ($data as $item) {
$html .= '<li>';
$html .= $name . $item['name'] . "<br/>";
if (array_key_exists('children', $item)) {
$html .= renderNames($item['children'], $name . $item['name'] . $sufix);
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}
函数renderNames(数组$data,$name=”“)
{
$sufix=“"”;
$html=“”;
foreach($数据作为$项){
$html.='- ';
$html.=$name.$item['name']。“
”;
如果(数组\键\存在('children',$item)){
$html.=renderNames($item['children',$name.$item['name'].$sufix);
}
$html.=' ';
}
$html.='
';
返回$html;
}
给你一个
作为旁注:请记住,列表实际上并不需要
。代码的问题是您正在更改每个子项的名称,这会导致意外的结果。此外,您可以保存一些条件并以更简单的方式编写代码,如下所示:
function renderNames(array $data, $name = "")
{
$sufix = "_";
$html = '<ul>';
foreach ($data as $item) {
$html .= '<li>';
$html .= $name . $item['name'] . "<br/>";
if (array_key_exists('children', $item)) {
$html .= renderNames($item['children'], $name . $item['name'] . $sufix);
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}
函数renderNames(数组$data,$name=”“)
{
$sufix=“"”;
$html=“”;
foreach($数据作为$项){
$html.='- ';
$html.=$name.$item['name']。“
”;
如果(数组\键\存在('children',$item)){
$html.=renderNames($item['children',$name.$item['name'].$sufix);
}
$html.=' ';
}
$html.='
';
返回$html;
}
给你一个
作为旁注:请记住,
对于列表来说并不是必需的非常感谢!您简化了很多!非常感谢!您简化了很多!
function renderNames(array $data, $name = "")
{
$sufix = "_";
$html = '<ul>';
foreach ($data as $item) {
$html .= '<li>';
$html .= $name . $item['name'] . "<br/>";
if (array_key_exists('children', $item)) {
$html .= renderNames($item['children'], $name . $item['name'] . $sufix);
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}