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);

Mac完全卸载Python3方法及安装

Mac默认安装Python2.7此版本不可卸载

对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成:
Python framework,即 Python 框架;
Python 应用目录;
指向 Python 的连接。
对于 Mac 自带的 Python,其框架目录为:
System/Library/Frameworks/Python.framework
而我们安装的 Python,其(默认)框架目录为:
/Library/Frameworks/Python.framework

查看当前版本

python3 -V

查看当前安装python版本

ls /Library/Frameworks/Python.framework/Versions/

删除python3.7版本

rm -rf /Library/Frameworks/Python.framework/Versions/3.7

删除Python3.7应用目录

cd /Applications
rm -rf Python 3.7/

删除/usr/local/bin 目录下指向的Python3.7 的连接

cd /usr/local/bin/
ls -l /usr/local/bin

rm Python3.7相关的文件和链接,如python3,pip3
Python3.7 对应的文件和链接最好删除干净
删除python的环境路径

vi ~/.bash_profile

删除Python3.7设置的环境路径
确认python是否已经删除

python3

IDLE删除后编译安装python3
在官网下载python3.7版本,https://www.python.org/downloads/release/python-3712/

wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz
tar -zxvf Python-3.7.12.tgz
cd Python-3.7.12
./configure
make && make install

查看版本

python3 -V