菜单与数据库上的PHP填充

所以我建立一个菜单到一个站点,蚂蚁菜单将通过数据库来填充,当我查询数据库,我得到这样的数组:菜单与数据库上的PHP填充

阵:

Array 

(

[0] => Array

(

[id] => 1

[nome] => Home

[parent_id] => 0

)

[1] => Array

(

[id] => 2

[nome] => Tutorials

[parent_id] => 0

)

[2] => Array

(

[id] => 3

[nome] => Photoshop

[parent_id] => 2

)

[3] => Array

(

[id] => 4

[nome] => Illustrato

[parent_id] => 2

)

[4] => Array

(

[id] => 5

[nome] => Web Design

[parent_id] => 2

)

[5] => Array

(

[id] => 6

[nome] => HTML

[parent_id] => 5

)

[6] => Array

(

[id] => 7

[nome] => CSS

[parent_id] => 5

)

)

我想搜索,并得到刚子项,例如:

function getChild($needle){ 

...

return $array

}

其中$阵列,是孩子们的信息:

print_r(getChild(2)); 

将输出是这样的:

Array ([0] => 3 [1] => 4 [2] => 5) 

在这个例子中

它返回的ID,但它可能与项目的每一个完整的信息返回数组...

我可以再次查询数据库并获得相同的结果,但恐怕这不是一个好的做法。例如,如果我有一个巨大的菜单,脚本会查询太多的数据库,并且会减慢页面的渲染速度。

我分层搜索这样的方式我已经头晕,疲惫的...

我意识到,在这个例子中,我没有任何的联系,但它很容易添加它们到底,这是我为什么不跟他们合作现在:P

回答:

它可能看起来像这样(假设我理解正确您的问题):

function getChild($needle, $sourceArray) 

{

$ret = array();

for($i = $needle; $i < $sourceArray.count(); $i++)

{

array_push($ret, $sourceArray[ $i ][ 'id ' ]) ;

}

return $ret;

}

编辑:功能不长度( ) - 这是计数()

回答:

您需要将您的数组传递到函数getChild():

getChild($data, 1, 2) 

事情是这样的:

function getChild(){ 

$results = [];

$args = func_get_args();

$arrays = array_shift($args);

foreach ($arrays as $subarr) {

$curr_results = [];

$keys = array_keys($subarr);

foreach ($args as $index) {

$curr_results[] = $subarr[$keys[$index]];

}

$results[] = $curr_results;

}

return $results;

}

$data = [

["id" => 1, "nome" => "Home", "parent id" => 0],

["id" => 2, "nome" => "Tutorials", "parent id" => 0],

["id" => 3, "nome" => "Photoshop", "parent id" => 0],

["id" => 4, "nome" => "Illustrato", "parent id" => 2],

];

print_r(getChild($data, 1, 2));

--output:--

Array

(

[0] => Array

(

[0] => Home

[1] => 0

)

[1] => Array

(

[0] => Tutorials

[1] => 0

)

[2] => Array

(

[0] => Photoshop

[1] => 0

)

[3] => Array

(

[0] => Illustrato

[1] => 2

)

)

我不得不说,这看起来像一个愚蠢的方式来混淆你的代码。这将更清晰地写出:

getChildData($data, "nome", "parent_id"); 

而是,您正在尝试访问带有数字索引的关联数组。

以上是 菜单与数据库上的PHP填充 的全部内容, 来源链接: utcz.com/qa/261860.html

回到顶部