实用函数

批量更新
public function updateBatch($tableName = "", $multipleData = array()){
    if( $tableName && !empty($multipleData) ) {
        // column or fields to update
        $updateColumn = array_keys($multipleData[0]);
        $referenceColumn = $updateColumn[0]; //e.g id
        unset($updateColumn[0]);
        $whereIn = "";

        $q = "UPDATE ".$tableName." SET ";
        foreach ( $updateColumn as $uColumn ) {
            $q .=  $uColumn." = CASE ";

            foreach( $multipleData as $data ) {
                $q .= "WHEN ".$referenceColumn." = \"".$data[$referenceColumn]."\" THEN '".$data[$uColumn]."' ";
            }
            $q .= "ELSE ".$uColumn." END, ";
        }
        foreach( $multipleData as $data ) {
            $whereIn .= "'".$data[$referenceColumn]."', ";  
        }  

        $q = rtrim($q, ", ")." WHERE ".$referenceColumn." IN (".  rtrim($whereIn, ', ').")"; 

        // Update    
        $result = DB::update(DB::raw($q));
        $data = [
            'status' => 200,
            'message' => '成功更新'.$result.'条',
        ] ;
        return $data;
    } else { 
        $data = [
            'status' => 400,
            'message' => '更新失败',
        ] ;
        return $data;
    }
}  
去掉二维数组里重复项
function array_unique_bykey($arr, $key){  
       $tmp_arr = array();  
        foreach($arr as $k => $v)  
        {  
            if(in_array($v[$key], $tmp_arr))  
            {  
                unset($arr[$k]); 
            }  
            else {  
                $tmp_arr[$k] = $v[$key]; 
            }  
       }  
       return $arr;  
}
读取csv
这个读取完,会自动做成key - value的数据,就不用每次用[0], [1]来访问字段了。
function readCsv($filename){
    ini_set("auto_detect_line_endings", true);
    $rows = [];
    if ($csvFileHandler = fopen($filename, 'r')) {
        $columns = fgetcsv($csvFileHandler, 0, ",");
        while (($rowData = fgetcsv($csvFileHandler, 0, ",")) !== false) {
            foreach ($columns as $columnIndex => $columnName) {
                if(empty($columnName)) continue;
                $row[$columnName] = $rowData[$columnIndex];
            }
            $rows[] = $row;
        }
    }
    return $rows;
}
导出csv
 function outputCsv($data, $filename, $emptyString = 'No Data'){
    if($data==false || count($data)==0){
        echo $emptyString;
        exit;
    }

    header('Content-Type: text/csv; charset=UTF-8');
    header("Content-Disposition: attachment; filename={$filename}.csv");
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');

    ob_start();
    $fp = fopen( 'php://output', 'w' ) or die();

    fputcsv($fp, array_keys(reset($data)));
    foreach ($data as $dataRow){
        fputcsv($fp, array_values($dataRow));
    }

    @fclose($fp);
    $output = ob_get_contents();
    ob_end_clean();
    echo "\xEF\xBB\xBF" . $output;
    exit;
}
public function myCurl($url, $header = null, $proxy = null, $method = "GET", $options = array()){
    $curl = curl_init();
    //基础参数
    $defaultOptions = array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_SSL_VERIFYPEER => FALSE,
      CURLOPT_SSL_VERIFYHOST => FALSE,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => $method,
    );

    //额外指定参数
    $options = $defaultOptions + $options;

    //设置代理
    if(!empty($proxy)){
      $options[CURLOPT_PROXY] = $proxy['proxy'];
      $options[CURLOPT_PROXYPORT] = $proxy['port'];
      //$options[CURLOPT_PROXYTYPE] = $proxy['type'];
    }

    //CURLOPT_HTTPHEADER
    if(!empty($header)){
      $options[CURLOPT_HTTPHEADER] = $header;
    }
    curl_setopt_array($curl, $options);

    $response = curl_exec($curl);
    //$info = curl_getinfo($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
      return "cURL Error #:" . $err;
    } else {
      return $response;
    }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 原文地址:http://www.php100.com/html/dujia/2015/0128/8500.html...
    IT程序狮阅读 587评论 2 13
  • 1. Numpy中的where函数 首先看下官网文档给出的定义: 依赖于所给定条件,决定返回x还是返回y,如果条件...
    FengYabing阅读 480评论 0 1
  • 中性笔其实很容易临出的线条变化感觉,主要是笔意要到,在心中写出毛笔运笔的感觉,手中随之改变力度,表现出轻重缓急的笔触。
    席帽青衫太瘦生阅读 348评论 0 2
  • “我悄悄的走了,正如我悄悄的来。我挥一挥衣袖,不带走一片云彩。” 徐志摩这首《再别康桥》,是在中国现代文学史上,永...
    马风阅读 3,267评论 10 53
  • 不要把无知当成个性,不是谁都可以原谅你的肆无忌惮!
    爆发的小龙人阅读 116评论 0 0