<?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) * &符号是传的数组的引用地址,而不是数组的值。 */
补充:php
$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);
补充:不能直接查询整个表中的数据,那样得不偿失。数组
应该像补充的,有范围的查询,再去整合数据。用in是比较好的选择。code