## 另一种拼接数据方法，利用数组的传引用做的。 原

大音希声

``````<?php
/**
* total用来做分页，在model里写的
* yaf中所有的多条查询都至少是二维的数组，为了方便，我定义成三维的
* 第二个和第三个数组都是以user_id为主键，没有自增id
* 假设，分别查了3个表，得到如下三个数组
* foreach遍历拼接数据开始
*/

//假设从控制器里查到三个数组，分别如下。
\$infoArray = array(
'total' => 3,
'rows' => array(
0 => array(
'id' => 1,
'user_id' => 1001,
'name' => '张三丰',
),
1 => array(
'id' => 2,
'user_id' => 1002,
'name' => '李司机',
),
2 => array(
'id' => 3,
'user_id' => 1003,
'name' => '王武功',
),
),
);
\$arrayAge = array(
'total' => 3,
'rows' => array(
0 => array(
'user_id' => 1001,
'age' => 21,
'phone' => '13900000001',
),
1 => array(
'user_id' => 1002,
'age' => 23,
'phone' => '13900000002',
),
2 => array(
'user_id' => 1003,
'age' => 18,
'phone' => '13900000003',
),
),
);
\$arrayPhone = array(
'total' => 3,
'rows' => array(
0 => array(
'user_id' => 1001,
'phone' => '13900000001',
),
1 => array(
'user_id' => 1002,
'phone' => '13900000002',
),
2 => array(
'user_id' => 1003,
'phone' => '13900000003',
),
),
);

//这个方法一般写在model里，
function formatArray(\$infoArray, \$arrayAge, \$arrayPhone)
{
if(!empty(\$arrayAge))
{
\$arrayAgeArr = array();
foreach((array) \$arrayAge['rows'] as \$val )
{
\$arrayAgeArr[\$val['user_id']]['age'] = \$val['age'];
}
}
if(!empty(\$arrayPhone))
{
\$arrayPhoneArr = array();
foreach((array) \$arrayPhone['rows'] as \$val )
{
\$arrayPhoneArr[\$val['user_id']]['phone'] = \$val['phone'];
}
}
foreach(\$infoArray['rows'] as &\$val)
{
if(\$arrayPhoneArr)
{
\$val['phone'] = \$arrayPhoneArr[\$val['user_id']]['phone'];
}
if(\$arrayAgeArr)
{
\$val['age'] = \$arrayAgeArr[\$val['user_id']]['age'];
}
}
return \$infoArray;
}
var_dump(formatArray(\$infoArray, \$arrayAge, \$arrayPhone));die();

/**
* 举例：\$arrayPhoneArr[\$val['user_id']]['phone'] = \$val['phone'];
* 总体来说，等号左边，是将\$arrayPhoneArr里的user_id作为键名，
* phone是自定义的第二维数组键名，
* 等号右边，是值。
* foreach(\$infoArray['rows'] as &\$val)
* &符号是传的数组的引用地址，而不是数组的值。
*/``````

``````\$order_info = \$database_order->field(true)->where(\$order_condition)->select();

foreach(\$order_info as \$key => \$val){
\$storeId[\$val['store_id']] = \$val['store_id'];
\$merId[\$val['mer_id']] = \$val['mer_id'];
\$orderId[\$val['order_id']] = \$val['order_id'];
}

\$store_where['store_id'] = array('in', \$storeId);
\$store_info = \$database_store->field(true)->where(\$store_where)->select();

\$now_order = \$orderObj->formatArray(\$order_info, \$store_info, \$merchant_info, \$deliverSupplyInfo);``````

### 大音希声

Numpy.array基本操作 生成一个数组 生成一个矩阵 基本属性 查看x数据维度out: 返回一个元组，查看具体大小out: 返回x中数据个数out: 查看y数据维度out: 返回一个元组，查看具体大小out: 返回...

Ice_spring
06/07
0
0
c# ref out parames 关键字

c# 方法的参数传递有四种类型：传值（by value），传址（by reference），输出参数（by output ），数组参数（by array）。 注：传值参数无须额外的修饰符，传址参数需要修饰符ref,输出参数需...

2013/10/20
57
0
C++传值、传引用

C++传值、传引用 C++的函数参数传递方式，可以是传值方式，也可以是传引用方式。传值的本质是：形参是实参的一份复制。传引用的本质是：形参和实参是同一个东西。 传值和传引用，对大多数常见...

lovedan
2017/05/07
0
0
《高性能javascript》 领悟随笔之-------DOM编程篇

《高性能javascript》 领悟随笔之-------DOM编程篇一 　　序：在javaSctipt中，ECMASCRIPT规定了它的语法，BOM实现了页面与浏览器的交互，而DOM则承载着整个页面文档。DOM编程性能一...

grootzhang
2016/04/28
0
0
JavaScript Memoization：让函数也有记忆功能

realazy在blog上给出了一个JavaScript Memoization的实现，Memoization就是函数返回值的缓存，比如一个函数参数与返回结果一一对应的hash列表，wiki上其实也有详细解释，我不细说了，只讨论一...

2017/04/14
0
0

222

MrPei
14分钟前
1
0
［译］Android Activity 和 Fragment 状态保存与恢复的最佳实践

https://blog.csdn.net/growing_tree/article/details/53759564 https://blog.csdn.net/u013588712/article/details/54691791...

shzwork
15分钟前
1
0

22分钟前
2
0
java Poi 操作执行excel 文件中函数问题

poi 读取excel 文件，当excel 有函数时，poi直接读取返回的是excel 函数，并不能返回函数计算结果: 解决步骤： sheet.setForceFormulaRecalculation(true); 判断该列格式是否为...

30分钟前
4
0
js模拟实现输入框input事件

31分钟前
3
0