Arrays 将未知数量的数据库字段前置到数组
我有一个具有以下结构的数据库Arrays 将未知数量的数据库字段前置到数组,arrays,codeigniter,Arrays,Codeigniter,我有一个具有以下结构的数据库 user_id | cat_name | cat_slug | parent_id ------------------------------------------- Tools | tools | 0 | 2 |Chainsaws |chainsaws | 1 等 我的最终目标是基本上有一个数组,它有一个显示类别路径的面包屑线索,它可以有任何地方,从没有父类别到5个类别 我能得到我想要的。。一路上有一些错误。我一直
user_id | cat_name | cat_slug | parent_id
-------------------------------------------
Tools | tools | 0 |
2 |Chainsaws |chainsaws | 1
等
我的最终目标是基本上有一个数组,它有一个显示类别路径的面包屑线索,它可以有任何地方,从没有父类别到5个类别
我能得到我想要的。。一路上有一些错误。我一直在尝试获取非对象错误的属性。尽管我所有其他返回值的尝试都失败了
我的解决方案在错误下面输出我的半期望效果,并带有以>为符号的额外类别中断。我只是希望有人能帮我清理一下,因为我正处在一个转折点,在做了几个小时没有解决办法之后
模型
您想要做的是构建一个递归函数。 例如:
function factorial($number)
{
if ($number < 2)
{
return 1;
}
else
{
return ($number * factorial($number-1));
}
}
在拉扯头发和喝了几瓶烈性朗姆酒之后,我终于明白了这一点。我在使用codeigniter方面还是比较新手,所以我的解决方案可能有一些不必要的步骤,但我觉得有义务分享我学到的东西。这是我的全部功能
function get_parent_trail($parent_id){
if ( $parent_id != 0 && $parent_id){
$parent_trail = array();
$inc = 0;
for( $i = 1; $i <= 4; $i ++ ) {
if ( $parent_id != 0 && $parent_id){
$this -> db -> select ( '*' );
$this -> db -> from ( 'categories' );
$this -> db -> where ( 'cat_id' , $parent_id );
$query = $this -> db -> get();
$row = $query -> row_array();
array_unshift( $parent_trail, $row['cat_name'] ) ;
$parent_id = $row['parents'];
} else {
$inc++;
}
}
$popOff = array_pop($parent_trail);
if ($inc > 2 ){
echo "<span style='color:red;'>No Parent Category</span>";
}
$string = '';
foreach( $parent_trail as $ti ) {
if ( $ti ) {
$string .= $ti.' > ';
}
}
(string) $test = substr($string, 0, -2);
echo $test;
} else {
echo "<span style='color:red;'>No Parent Category</span>";
}
}
id | name | slug | Parent(s)
-----------------------------------------------------------------------
1 | Electric Chainsaws | electric-chainsaws | Tools > Chainsaws
function factorial($number)
{
if ($number < 2)
{
return 1;
}
else
{
return ($number * factorial($number-1));
}
}
function get_parent_trail($parent_id){
if ( $parent_id != 0 && $parent_id){
$parent_trail = array();
$inc = 0;
for( $i = 1; $i <= 4; $i ++ ) {
if ( $parent_id != 0 && $parent_id){
$this -> db -> select ( '*' );
$this -> db -> from ( 'categories' );
$this -> db -> where ( 'cat_id' , $parent_id );
$query = $this -> db -> get();
$row = $query -> row_array();
array_unshift( $parent_trail, $row['cat_name'] ) ;
$parent_id = $row['parents'];
} else {
$inc++;
}
}
$popOff = array_pop($parent_trail);
if ($inc > 2 ){
echo "<span style='color:red;'>No Parent Category</span>";
}
$string = '';
foreach( $parent_trail as $ti ) {
if ( $ti ) {
$string .= $ti.' > ';
}
}
(string) $test = substr($string, 0, -2);
echo $test;
} else {
echo "<span style='color:red;'>No Parent Category</span>";
}
}