私はPHPが初めてで、C++やJavaとは大きく異なるため、PHPで参照がどのように機能するかわかりません。
基本的に、「タグ」を再帰的に探すループがあります。その配列要素の場所が必要な場合は、別の配列を「タグ」内の「タグ」として追加します。私の場合は、タグ、サブタグ、サブサブタグがあります...
コードは次のとおりです。
private function organize_tags(&$tags = NULL)
{
if ($tags === NULL)
{
return;
}
$organized_tags = array();
$highest_tag_level = -1;
foreach ($tags as $tag)
{
if($tag['level'] > $highest_tag_level)
{
$highest_tag_level = $tag['level'];
}
}
$current_tag_level = 0;
foreach ($tags as $key => $tag)
{
if($tag['level'] == $current_tag_level)
{
array_push($organized_tags,$tag);
unset($tags[$key]);
}
}
$current_tag_level++;
while ($current_tag_level <= $highest_tag_level)
{
foreach ($tags as $tag)
{
if($tag['level'] == $current_tag_level)
{
$tag_to_find = $tag['upper_tag'];
$parent_tag = $this->find_tag($organized_tags, $tag_to_find);
if($parent_tag != null)
{
if(!is_array($parent_tag['tag']))
{
$parent_tag['tag'] = array();
}
array_push($parent_tag['tag'], $tag);
}
}
}
$current_tag_level++;
}
$tags = $organized_tags;
}
private function find_tag(&$tags, &$desired_tag_id)
{
$ret = NULL;
foreach($tags as $tag)
{
if($tag['id'] == $desired_tag_id)
{
return $tag;
}
else if (count($tag['tag']) > 0)
{
$ret = $this->find_tag($tag, $desired_tag_id);
if($ret !== NULL)
{
return $ret;
}
}
}
return $ret;
}
誰かが私がこの挿入を取得する方法を教えてくれたら、私はすっごく幸せになるでしょう.