问题有点绕,头晕者勿进^_^

seven002 2014-08-27 11:23:24
array ( 0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'),
1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>2),
2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),
)
当type=1去除相同id重复并且key变成ID,当type=2时KEY变成id_bian的形式,最终转成以下数组
array ( 0 => array ( '10' => '', '11_1' => '','11_2' => ''),)
然后在与下面数组合并
array ( 0 => array ( '10' => '1','11_2' => '1'),
1 => array ( '10' => '1','11_2' => '1'),
2 => array ( '11_1' => '1','11_2' => '1'),
3 => array ( '10' => '2','11_2' => '1'),
)
最终得到
array ( 0 => array ( '10' => '1','11_1'=>'','11_2' => '1'),
1 => array ( '10' => '1', '11_1 => '', 11_2' => '1'),
2 => array ( '10' => '', '11_1' => '1', '11_2' => '1'),
3 => array ( '10' => '2', '11_1' => '', '11_2' => '1'),
)
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-08-28
  • 打赏
  • 举报
回复
怎么插?插在哪个部位? $c 的每个成员都含有 $t 的键
seven002 2014-08-28
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
并没有遍历 $c 啊
这么说吧。现在$t是整理$a得到的数组,$c是合并$t和$b。我想在$c里在插入$t。版主应该怎么改?
xuzuning 2014-08-28
  • 打赏
  • 举报
回复
如果你一开始就打算放进去,那么 $c = array(); 改为 $c = array($t);
seven002 2014-08-28
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
怎么插?插在哪个部位? $c 的每个成员都含有 $t 的键
Array ( 0=> array ( '10' => '', '11_1' => '','11_2' => '')//就插在这里 [0] => Array ( [10] => 1 [11_1] => [11_2] => 1 ) [1] => Array ( [10] => 1 [11_1] => [11_2] => 1 ) [2] => Array ( [10] => [11_1] => 1 [11_2] => 1 ) [3] => Array ( [10] => 2 [11_1] => [11_2] => 1 ) )
xuzuning 2014-08-27
  • 打赏
  • 举报
回复
$a = array (
 0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'), 
 1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'2'), 
 2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
 3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),  
);
$b = array (
 0 => array ( '10' => '1','11_2' => '1'), 
 1 => array ( '10' => '1','11_2' => '1'),
 2 => array ( '11_1' => '1','11_2' => '1'),
 3 => array ( '10' => '2','11_2' => '1'),  
);
$t = array();
foreach($a as $item) {
  if($item['type'] == '1') {
    $t[$item['id']] = '';
  }else $t[$item['id'].'_'.$item['bian']] = '';
}
$c = array();
foreach($b as $v) {
  $r = array();
  foreach($t as $k=>$n) $r[$k] = @$v[$k];
  $c[] = $r;
}
print_r($c);
Array
(
    [0] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )

    [1] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )

    [2] => Array
        (
            [10] => 
            [11_1] => 1
            [11_2] => 1
        )

    [3] => Array
        (
            [10] => 2
            [11_1] => 
            [11_2] => 1
        )

)

xuzuning 2014-08-27
  • 打赏
  • 举报
回复
并没有遍历 $c 啊
seven002 2014-08-27
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
不太明白你的意思

$a = array (
 0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'), 
 1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'2'), 
 2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
 3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),  
);
$b = array (
 0 => array ( '10' => '1','11_2' => '1'), 
 1 => array ( '10' => '1','11_2' => '1'),
 2 => array ( '11_1' => '1','11_2' => '1'),
 3 => array ( '10' => '2','11_2' => '1'),  
);
$t = array();
foreach($a as $item) {
  if($item['type'] == '1') {
    $t[$item['id']] = '';
  }else $t[$item['id'].'_'.$item['bian']] = '';
}
$c = array();
foreach($b as $v) {
  $r = array();
  foreach($t as $k=>$n) $r[$k] = @$v[$k];
  $c[] = $r;
}
print_r($c);
就是数组a整里的结果插到$c中,是不是一定要把$c在遍历一次?
xuzuning 2014-08-27
  • 打赏
  • 举报
回复
不太明白你的意思
seven002 2014-08-27
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
$a = array (
 0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'), 
 1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'2'), 
 2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
 3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),  
);
$b = array (
 0 => array ( '10' => '1','11_2' => '1'), 
 1 => array ( '10' => '1','11_2' => '1'),
 2 => array ( '11_1' => '1','11_2' => '1'),
 3 => array ( '10' => '2','11_2' => '1'),  
);
$t = array();
foreach($a as $item) {
  if($item['type'] == '1') {
    $t[$item['id']] = '';
  }else $t[$item['id'].'_'.$item['bian']] = '';
}
$c = array();
foreach($b as $v) {
  $r = array();
  foreach($t as $k=>$n) $r[$k] = @$v[$k];
  $c[] = $r;
}
print_r($c);
Array
(
    [0] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )

    [1] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )

    [2] => Array
        (
            [10] => 
            [11_1] => 1
            [11_2] => 1
        )

    [3] => Array
        (
            [10] => 2
            [11_1] => 
            [11_2] => 1
        )

)

如果在$C里追加$t做为元素是不是要重新遍历? 追加 array ( '10' => '', '11_1' => '','11_2' => '')做为$c的

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧