foreach里取别的表里数据的常用方法

从orders表里取出数据,然后去distribution表和distribution_real表取路区和站点的名称。

方法一:傻逼做法
直接循环orders数据,然后在循环里写sql,去取自己需要的数据。

foreach($orders as $order){
	$distributionId = $order['distribution_id'];
	$sql = "select name from distribution where id=$distributionId";
	$distribution = $db->fetchOne($sql);
	$distributionName = $distribution['name'];
}

方法二:弱智做法
取出distribution表里的所有数据,然后循环,把路区id做为key,路区名称作为值,组装成一个一维数组。然后循环orders数据,以id来取路区值。

$distributionInfo = [1 => '路区一',2 => '路区2'];
foreach($orders as $order){
	$distributionId = $order['distribution_id'];
	$distributionName = $distributionInfo[$distributionId];
}

方法三:nice做法
先循环orders数据,取出路区id,然后取出路区数据,然后在循环orders和distributions数据。

$distributionIds = [];
foreach($orders as $order){
	$distributionIds[] = $order['id'];
}

$distributionIdsStr = implode(',',$distributionIds);
$sql = "select id,name from distribution where id in ($distributionIdsStr)";
$distributionTemps = $db->fetchAll($sql);

$distribution = [];
foreach($distributionTemps as $distributionTemp){
	$distribution[$distributionTemp['id']] = $distributionTemp['name'];
}

foreach($orders as $order){
	$distributionId = $order['distribution_id'];
	$distributionName = $distribution[$distributionId];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值