菜单与数据库上的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