<?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