通常我最终会通过浏览 StackOverflow 找到解决方案,但在这里我却遇到了困难!
这是我在数据库中的类别结构
Parent category A (category_id = 1)
Child category B (category_id = 2)
Child category C (category_id = 3)
Child category D (category_id = 4)
Child category E (category_id = 5)
基本上我的 Joomla 扩展不允许您同时将页面分类为多个类别。 但我设法通过修改一些php文件并添加几个category_id值(用逗号分隔)来解决这个问题
我的代码有效。但时间太长了。我想简化一下。 我必须根据数字的位置创建所有场景。
我的代码:
// Get all child ids from this category
$categoryModel = ES::model('ClusterCategory');
$childs = $categoryModel->getChildCategories($activeCategory->id, [], SOCIAL_TYPE_PAGE, array('state' => SOCIAL_STATE_PUBLISHED));
$childIds = [];
foreach ($childs as $child) {
$childIds[] = "1,$child->id";
$childIds[] = "2,$child->id";
$childIds[] = "3,$child->id";
$childIds[] = "4,$child->id";
$childIds[] = "5,$child->id";
$childIds[] = "$child->id,1";
$childIds[] = "$child->id,2";
$childIds[] = "$child->id,3";
$childIds[] = "$child->id,4";
$childIds[] = "$child->id,5";
$childIds[] = "1,$child->id,2";
$childIds[] = "2,$child->id,3";
$childIds[] = "3,$child->id,4";
$childIds[] = "4,$child->id,5";
$childIds[] = "5,$child->id,1";
$childIds[] = "2,$child->id,1";
$childIds[] = "3,$child->id,2";
$childIds[] = "4,$child->id,3";
$childIds[] = "5,$child->id,4";
$childIds[] = "1,$child->id,5";
$childIds[] = $child->id;
}
我的问题: 如何插入变量而不是数字? 我尝试了正则表达式和许多其他东西。
就像一个未知数的方程一样。 $childIds[] = X,$child->id,X;
谢谢你, 菲利普
你应该使用嵌套循环
$categoryModel = ES::model('ClusterCategory');
$childs = $categoryModel->getChildCategories($activeCategory->id, [], SOCIAL_TYPE_PAGE, array('state' => SOCIAL_STATE_PUBLISHED));
$childIds = [];
foreach ($childs as $child) {
for ($i = 1; $i <= 5; $i++) {
$childIds[] = "$i,$child->id";
$childIds[] = "$child->id,$i";
for ($j = 1; $j <= 5; $j++) {
if ($i != $j) {
$childIds[] = "$i,$child->id,$j";
}
}
}
}
这样,你可以通过改变循环边界来轻松调整数字的范围,并且代码将更易于维护。