本文目录一览:
PHP数组合并问题,二维数组合并成三位数组
?php
$result=array(
array
(
"id" = 5,
"activity_id" = 2,
"applyid" = 5,
"signedtime" = 1463056411,
"typeid" = 1,
"name" = '王',
),
array
(
"id" = 6,
"activity_id" = 2,
"applyid" = 5,
"signedtime" = 1463066411,
"typeid" = 2,
"name" = '王',
),
array
(
"id" = 8,
"activity_id" = 2,
"applyid" = 5,
"signedtime" = 1463066411,
"typeid" = 4,
"name" = '王',
),
array
(
"id" = 9,
"activity_id" = 2,
"applyid" = 6,
"signedtime" = 1463066411,
"typeid" = 4,
"name" = 'zhang',
)
);
//print_r($result);
$new_rst = array();
$keys = array();
foreach($result as $arr){
$_arr = $arr;
unset($_arr["signedtime"], $_arr["typeid"]);
$vals1 = $_arr;
unset($_arr["id"]);
$key = implode('-', $_arr);
if(isset($keys[$key])){
$_arr = $new_rst[$key];
$_arr['signed'][] = array($arr["signedtime"], $arr["typeid"]);
$new_rst[$key] = $_arr;
} else {
$_arr['signed'][] = array($arr["signedtime"], $arr["typeid"]);
$new_rst[$key] = $_arr;
$keys[$key] = true;
}
}
$new_rst = array_values($new_rst);
print_r($new_rst);
exit;
求解 PHP 二维数组生成三位数组的方法?
PHP的array_map函数是个很有趣的函数。
?php
$arr = array (
array('水果','香蕉','2斤'),
array('水果','苹果','6斤'),
array('水果','梨','4斤'),
array('水果','水蜜桃','8斤'),
array('水果','橙子','5斤'),
array('水果','西瓜','3斤'),
array('蔬菜','芹菜','1斤'),
array('蔬菜','辣椒','5斤'),
array('蔬菜','西葫芦','7斤'),
array('蔬菜','豆芽','4斤'),
array('蔬菜','菜花','2斤')
);
$_arr = array();
foreach($arr as $k=$v)
foreach($v as $_k=$_v)
$_arr[$_k][] = $_v;
$_arr = array_map(null,$_arr[0],$_arr[1],$_arr[2]);
$arr = array();
foreach($_arr as $k=$v)
$arr[$v[0]][] = $v;
$arr = array_values($arr);
var_dump($arr);
?
php将二维数组值数组里某一个键值一样的拼装成一个三维数组
?php
$indexArr = array();
$newArr = array();
foreach ($sourceArr as $v) {
// 判断该order_id是否已经存在于新数组中
if (array_key_exists($v['order_id'], $indexArr)) {
// 获取该order_id在新数组中的位置
$k = $indexArr[$v['order_id']];
// 如果该部分没有被加维
if (!array_key_exists('order_id', $newArr[$k])) {
// 加维,并且将这一条记录插入
$newArr[$k] = array($newArr[$k], $v);
} else {
array_push($newArr[$k], $v);
}
} else {
$key = count($newArr); // 插入新数组的位置
array_push($newArr, $v);
// 建立一个order_id对应其在新数组中位置的索引数组
$indexArr[$v['order_id']] = $key;
}
}
这是按照你要的结构给你组织的。不过你要的结构可能并不方便你进行处理,因为订单号相同的记录比订单号唯一的记录维度要深一层,如果你要维度相同的话,可以这么做
$indexArr = array();
$newArr = array();
foreach ($sourceArr as $v) {
if (array_key_exists($v['order_id'], $indexArr)) {
$k = $indexArr[$v['order_id']];
array_push($newArr[$k], $v);
} else {
$key = count($newArr);
array_push($newArr, array($v));
$indexArr[$v['order_id']] = $key;
}
}
PHP 二维数组变三维数组
$a="上面的数组";
$b=array();
for($i=0;$icount($a);$i++){
$b[$a[$i]['Id']]['Phone'][]=$a[$i]['Phone']
if(!empty($b[$a[$i]['Id']]['Id'])){
if($b[$a[$i]['Id']]['Id']==$a[$i]['Id']) continue;
}else{
$b[$a[$i]['Id']]['Key']=$a[$i]['Key'];
$b[$a[$i]['Id']]['Id']=$a[$i]['Id'];
$b[$a[$i]['Id']]['name']=$a[$i]['name'];
}
}