本文目录一览:
- [PHP 多维数组的合并与重组](#PHP 多维数组的合并与重组)
- php多维数组子类合并于父类
- php怎么实现一张表中子类ID归于父类ID
- php下将多个数组合并成一个数组的方法与实例代码
- php两个相关的多维数组怎么合并成一个数组
PHP 多维数组的合并与重组
用foreach可以实现,希望对楼主有所帮助:$result
是结果
$result = array();
foreach ($attribute as $k => $v) {
$name = $v['group_name'];
$item = $v['item'];
// unset($v['group_name']); // unset($v['item']);
$result[$k]['group_name'] = $name;
$result[$k]['item'] = $item;
}
echo "<pre>";
print_r($result);
echo "</pre>";
php多维数组子类合并于父类
你这样都是同个id分在一起,但是没法划分等级啊。我觉得你这个应该在表中加个字段parentid,比如说,学生管理为一级,他下面的添加,列表是他的子类,这样就好取了。类似于分类,出现等级划分的效果。
php怎么实现一张表中子类ID归于父类ID
现在你的里面只分了两个类。其实这个表可以做无限级分类。输出用递归实现。正好我这几天研究了这个。代码写给你。
$result = mysql_query("select * from tmodule_conf order by ModuleId");
// 首先我们把各个分类的值保存在一个二维数组中,在下面的递归函数里有用。
while ($row = mysql_fetch_object($result)) {
$arr[] = array($row->ModuleId, $row->SubModuleId, $row->ModuleName); // 每行保存一个分类的ModuleId,SubModuleId,ModuleName
}
########### 普通显示分类 ####################
function fenlei($SubModuleId = -1, $str) { // $f_id初始化为0,也就是从最大分类开始循环
global $arr; // 声明$arr为全局变量才可在函数里引用
for ($i = 0; $i < count($arr); $i++) { // 对每个分类进行循环
if ($arr[$i][1] == $SubModuleId) { // $arr[$i][1]表示第$i+1个分类的SubModuleId的值。开始$SubModuleId=-1,也就是把SubModuleId=-1的分类输出来
echo $str . "--" . $arr[$i][2] . "<br>"; // $arr[$i][2]表示第$i+1个分类的name的值
fenlei($arr[$i][0], $str . " "); // $arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的ModuleId作为SubModuleId参数把自己的子类再循环出来
}
}
}
// 调用例子
fenlei(-1, " ");
php下将多个数组合并成一个数组的方法与实例代码
1. 合并数组
array_merge()
函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。其形式为:
array array_merge(array array1, array array2..., arrayN)
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
- 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
- 如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
- 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。 实例如下:
$face = array("J", "Q", "K", "A");
$numbered = array("2", "3", "4", "5", "6", "7", "8", "9");
$cards = array_merge($face, $numbered);
shuffle($cards);
print_r($cards);
这将返回如下所示的结果:
Array
(
[0] => A
[1] => 4
[2] => 9
[3] => 3
[4] => K
[5] => 7
[6] => 5
[7] => Q
[8] => 6
[9] => 8
[10] => 2
[11] => J
)
2. 递归追加数组
array_merge_recursive()
函数与array_merge()
相同,可以将两个或多个数组合并在一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方式。array_merge()
会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()
将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。
其形式为:
array array_merge_recursive(array key, array values)
示例如下:
$class1 = array("John" => 100, "James" => 85);
$class2 = array("Micky" => 78, "John" => 45);
$classScores = array_merge_recursive($class1, $class2);
print_r($classScores);
这将返回如下结果:
Array
(
[John] => Array
(
[0] => 100
[1] => 45
)
[James] => 85
[Micky] => 78
)
3. 连接两个数组
array_combine()
函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:
array array_merge(array array1, array array2[, array arrayN])
注意,两个输入数组必须大小相同,不能为空。 示例如下:
$abbreviations = array("AL", "AK", "AZ", "AR");
$states = array("Alabama", "Alaska", "Arizona", "Arkansas");
$stateMap = array_combine($abbreviations, $states);
print_r($stateMap);
这会返回:
Array
(
[AL] => Alabama
[AK] => Alaska
[AZ] => Arizona
[AR] => Arkansas
)
php两个相关的多维数组怎么合并成一个数组
如果是两个数组是相对应的,可以使用以下方法:
<?php
// 数组1(gc_class):
$gc_class = array(
0 => array('gc_id' => 1, 'gc_name' => '分类1', 'gc_title' => '111111'),
1 => array('gc_id' => 2, 'gc_name' => '分类2', 'gc_title' => '2222')
);
// 数组2(acticity):
$acticity = array(
'0' => array('activity_id' => 1, 'gc_class' => 1, 'activity_name' => '分类1下面的活动'),
'1' => array('activity_id' => 2, 'gc_class' => 2, 'activity_name' => '分类2下面的活动')
);
$arrs = array();
foreach ($gc_class as $key => $_gc_class) {
$arrs[$key] = array_merge($_gc_class, $acticity[$key]);
}
print_r($arrs);
exit;