thinkphp - php如何可以让二维组的每一个数组压进一个元素?
PHP中文网
PHP中文网 2017-04-11 10:37:15
[PHP讨论组]

问题场景:用户在购物下单的时候购买了多个商品。

问题描述:
一般这样订单会分为两个表, 主表 订单信息及支付、地址、用户信息 副表 购买的商品信息 主表的ID去关联副表 关系为一对多。
在PHP里一般会先插入主表产生ID,然后再循环购买的商品信息再一条条数据入库。
那么问题来了,如果可以将ID直接压入商品信息数据,然后直接批量插入?

示例数组

//主表订单产生的ID
$odiArr = array('oid' => 12);
//副表购买的信息
$product = array(
    array('product_name'=> '产品一号', 'price' => 99.8),
    array('product_name'=> '产品二号', 'price' => 9.8),
    array('product_name'=> '产品三号', 'price' => 12.8),
);

//最后想要得到的结果

$order = array(
    array('product_name'=> '产品一号', 'price' => 99.8, 'oid' => 12),
    array('product_name'=> '产品二号', 'price' => 9.8, 'oid' => 12),
    array('product_name'=> '产品三号', 'price' => 12.8, 'oid' => 12),
);

这儿是我自己写的一个方法

Q1:那么php本身有这样的函数么?为二维数组增加一个单元?
Q2:有没有更高率,更严瑾的写法?

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
天蓬老师
使用匿名函数更快
<?php
header('Content-type:text/html;charset=utf-8');
//主表订单产生的ID
$odiArr = array('oid' => 12);
//副表购买的信息
$product = array(
    array('product_name'=> '产品一号', 'price' => 99.8),
    array('product_name'=> '产品二号', 'price' => 9.8),
    array('product_name'=> '产品三号', 'price' => 12.8),
);
$product = array_map(function($value) use($odiArr){
    return array_merge($value,$odiArr);
},$product);
var_dump($product);die;
PHPz

public function test()
{

$data = array('one' => array('a'=>'b'),'two' => 'b', 'three' => 'c');

if(!is_array($data)){
    return false;
}
foreach($data as $key => $val){
    if(is_array($val)){
        return true;
    }
}
return false;

}

估计这个方法你也想到了,目前没想到别的,有空想想

巴扎黑

php里没有这样直接给每个数组单元加元素的函数。
更加优雅点的写法可以省掉3个函数调用:

function addUnit(&$data, $unit)
{
    if (!is_array($data) || empty($data) || !is_array($unit) || empty($unit)) {
        return false;
    }
    foreach ($data as &$v) {
        $v = array_merge($v, $unit);
    }
    return true;
}
阿神

循环array_merge 不久可以了么

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号