VR、AR和MR区别

VR:是一个完全的虚拟世界。
AR:真实世界和虚拟世界相互结合。
MR:具备学习能力能够实现全息投影和真实世界环境融合

PHP交叉排列的组合算法

应用场景商城类多规格组合如:
['红色','白色','蓝色','黑色']
['S','M','L','XL','XXL']

需要得到能有多少种组合

$combine_array = [['红色','白色','蓝色','黑色'],['S','M','L','XL','XXL']]
// 交叉排列的组合算法
protected function combine($array)
{
    $heads = $array[0];
    for ($i = 1; $i < count($array); $i++){
        if (count($array[$i])){
            $heads = $this->addNewType($heads, $array[$i]);
        }
    }
    return $heads;
}

protected function addNewType($heads, $choices)
{
    $result = [];
    for ($i = 0; $i < count($heads); $i++){
        for ($j = 0; $j < count($choices); $j++){
            $result[] = $heads[$i] . ':' . $choices[$j];
        }
    }
    return $result;
}

Mysql百万级数据count(*)统计慢

Innodb存储引擎会出现这类情况,MyISAM统计时没有where条件是是非常快的。

解决方法,使用二级索引添加where条件

当然数据量打建议提前做考虑好好分表,分库

php导出数据保存到cvs文存储到目录

设置内存限制

set_time_limit(0);
ini_set('memory_limit', '1024M');

// 设置cvs第一行数据
$header = ['A1','B1','C1','D1'];
$csvList = [
    ['A2','B2','C2','D2'],
    ['A3','B3','C3','D3'],
    ['A4','B4','C4','D4'],
];
//下载csv的文件名
$filename = getcwd() . '/csv/用户骑行数据' . date('YmdHis', $time_range) . '.csv';
exportCsv($data, $title_arr, $file_name = '')
{
    $csv_data = '';
    // 标题
    $num = count($title_arr);
    for ($i = 0; $i < $num - 1; ++$i) {
        $csv_data .= '"' . $title_arr[$i] . '",';
    }
    if ($num > 0) {
        $csv_data .= '"' . $title_arr[$num - 1] . "\"\r\n";
    }
    foreach ($data as $k => $row) {
        for ($i = 0; $i < $num - 1; ++$i) {
            $row[$i] = str_replace("\"", "\"\"", $row[$i]);
            $csv_data .= '"' . $row[$i] . '",';
        }
        $csv_data .= '"' . $row[$num - 1] . "\"\r\n";
        unset($data[$k]);
    }
    $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;
    file_put_contents($file_name, $csv_data) ;
}
exportCsv($csvList, $header, $filename);