技术的世界只说技术就好了..

分类目录

近期文章

标签

近期评论

功能

2018年十二月
« 11月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

MySQL update 语句的正确用法

以下的文章主要介绍的是MySQL update 语句的实际用法,我们首先是以单表的UPDATE语句来引出实现MySQL update 语句的实际方案,以下就是文章的详细内容描述,望你看完之后会有收获。

单表的MySQL UPDATE语句:

	
  • UPDATE [LOW_PRIORITY] [IGNORE] tbl_name  
  • SET col_name1=expr1 [, col_name2=expr2 ...]  
  • [WHERE where_definition]  
  • [ORDER BY ...]  
  • [LIMIT row_count] 
  • 多表的UPDATE语句:

    	
  • UPDATE [LOW_PRIORITY] [IGNORE] table_references  
  • SET col_name1=expr1 [, col_name2=expr2 ...]  
  • [WHERE where_definition] 
  • UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

    MySQL UPDATE语句支持以下修饰符:

    如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。

    如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

    如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。例如,以下语句把年龄列设置为比当前值多一:

    	
  • MySQL> UPDATE persondata SET ageage=age+1; 
  • MySQL UPDATE赋值被从左到右评估。例如,以下语句对年龄列加倍,然后再进行增加:

    	
  • MySQL> UPDATE persondata SET ageage=age*2, ageage=age+1; 
  • 如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。

    如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“zero”值。

    UPDATE会返回实际被改变的行的数目。MySQL_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。

    您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。

    如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。

    您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。以下是一个例子:

    	
  • SQL>UPDATE items,month SET items.price=month.price  
  • WHERE items.id=month.id; 
  • 以上的例子显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。

    注释:您不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。

    在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的MySQL UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。

    如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。该功能由InnoDB提供,用于对其它表进行相应的修改。

    目前,您不能在一个子查询中更新一个表,同时从同一个表中选择。

    wordpress 3.0 IIS httpd.ini配置伪静态

    据说在linux环境下启动伪静态是件非常简单的事,不过我还没玩linux的经验,这里也不多说了,只是介绍下IIS环境下利用ReWrite组件实现wordpress伪静态的方法,这种方法不需要多余的步骤,只要空间商启用了Rewrite模块,我们自己再在网站的根目录上上传一个httpd.ini文件即可,微酷博客在这里就只提供httpd.ini规则的写法。

    httpd.in文件是一个Rewrite规则,该规则如下:
    [ISAPI_Rewrite]
    # Defend your computer from some worm attacks
    #RewriteRule .*(?:global.asa|default.ida|root.exe|..).* . [F,I,O]
    # 3600 = 1 hour
    CacheClockRate 3600
    RepeatLimit 32
    # Protect httpd.ini and httpd.parse.errors files
    # from accessing through HTTP
    # Rules to ensure that normal content gets through
    RewriteRule /tag/(.*) /index.php?tag=$1
    RewriteRule /software-files/(.*) /software-files/$1 [L]
    RewriteRule /images/(.*) /images/$1 [L]
    RewriteRule /sitemap.xml /sitemap.xml [L]
    RewriteRule /favicon.ico /favicon.ico [L]
    # For file-based wordpress content (i.e. theme), admin, etc.
    RewriteRule /wp-(.*) /wp-$1 [L]
    # For normal wordpress content, via index.php
    RewriteRule ^/$ /index.php [L]
    RewriteRule /(.*) /index.php/$1 [L]
    把上面的内容复制到记事本里面,保存为httpd.ini文件,上传到wordpress网站根目录即可

    php socket模拟POST GET请求 fsockopen版

    function httpRequestGET($url){
      $url2 = parse_url($url);
      $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
      $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
      $host_ip = @gethostbyname($url2["host"]);
      $fsock_timeout=20;
      if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){
        return false;
      }
      
      $request =  $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : "");
      $in  = "GET " . $request . " HTTP/1.0\r\n";
      $in .= "Accept: */*\r\n";
      $in .= "User-Agent: Payb-Agent\r\n";
      $in .= "Host: " . $url2["host"] . "\r\n";
      $in .= "Connection: Close\r\n\r\n";
      if(!@fwrite($fsock, $in, strlen($in))){
        fclose($fsock);
        return false;
      }
      unset($in);
      
      $out = "";
      while($buff = @fgets($fsock, 2048)){
        $out .= $buff;
      }
      fclose($fsock);
      $pos = strpos($out, "\r\n\r\n");
      $head = substr($out, 0, $pos);    //http head
      $status = substr($head, 0, strpos($head, "\r\n"));    //http status line
      $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
      if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
        if(intval($matches[1]) / 100 == 2){
          return $body;  
        }else{
          return false;
        }
      }else{
        return false;
      }
    }
    function httpRequestPOST($url,$post_data){
      $url2 = parse_url($url);
      $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
      $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
      $host_ip = @gethostbyname($url2["host"]);
      $fsock_timeout=20;//秒
      if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){
        return false;
      }
      
      $request =  $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : "");
      
      $needChar = false;
      
      foreach($post_data as $key => $val)  {
        
        $post_data2 .= ($needChar ? "&" : "") . urlencode($key) . "=" . urlencode($val);
        $needChar = true;
      }
      $in  = "POST " . $request . " HTTP/1.0\r\n";
      $in .= "Accept: */*\r\n";
      $in .= "Host: " . $url2["host"] . "\r\n";
      $in .= "User-Agent: Lowell-Agent\r\n";
      $in .= "Content-type: application/x-www-form-urlencoded\r\n";
      $in .= "Content-Length: " . strlen($post_data2) . "\r\n";
      $in .= "Connection: Close\r\n\r\n";
      $in .= $post_data2 . "\r\n\r\n";
      
      unset($post_data2);
      if(!@fwrite($fsock, $in, strlen($in))){
        fclose($fsock);
        return false;
      }
      unset($in);
      
      $out = "";
      while($buff = fgets($fsock, 2048)){
        $out .= $buff;
      }
      
      fclose($fsock);
      $pos = strpos($out, "\r\n\r\n");
      $head = substr($out, 0, $pos);    //http head
      $status = substr($head, 0, strpos($head, "\r\n"));    //http status line
      $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
      if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
        if(intval($matches[1]) / 100 == 2){
          return $body;
        }else{
          return false;
        }
      }else{
        return false;
      }
    }

    函数调用:
     

    $post_data = array("name"=>"xd","sex"=>"man");
    httpRequestPOST("http://localhost/post.php",$post_data);
     

    socket写的顺序:
     

    POST /post.php HTTP/1.0
    Accept: */*
    Host: localhost
    User-Agent: Lowell-Agent
    Content-type: application/x-www-form-urlencoded
    Content-Length: 15
    Connection: Close
    name=xd&sex=man
     

    普通POST的结果演示:
     

    POST/?username=111&password=222HTTP/1.1
    Host:127.0.0.1:8000
    User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language:zh-cn,zh;q=0.5
    Accept-Encoding:gzip,deflate
    Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Referer:http://127.0.0.1:8000/?username=111&password=222
    Content-Type:application/x-www-form-urlencoded
    Content-Length:25
    username=111&password=222

    GET的运行结果演示:

     

    GET/?username=111&password=222HTTP/1.1
    Host:127.0.0.1:8000
    User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language:zh-cn,zh;q=0.5
    Accept-Encoding:gzip,deflate
    Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Referer:http://127.0.0.1:8000/?username=1&password=2

    POST文件上传的结果演示:

     

    POST/?username=111&password=222HTTP/1.1
    Host:127.0.0.1:8000
    User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language:zh-cn,zh;q=0.5
    Accept-Encoding:gzip,deflate
    Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Referer:http://127.0.0.1:8000/?username=111&password=222
    Content-Type:multipart/form-data;boundary=---------------------------23757983230932
    Content-Length:1704
    -----------------------------23757983230932
    Content-Disposition:form-data;name="phototitle"
    12
    -----------------------------23757983230932
    Content-Disposition:form-data;name="photo";filename="技术考核题.txt"
    Content-Type:text/plain
    技术考核
    本次是个编程题,题目选Java/语言进行回答。
    问题描述:
    假设你的爱好是集邮。目前总共有N种不同的邮票,编号为从0到N-1.每种邮票的价钱被定义在数组int[]prices中(序号从0开始,数组的第i个元素表示第i种邮票的价格)。
    你的目标是收集尽可能多种的邮票。你当前拥有的邮票存储在int[]have这个数组中。初始时,你没有钱,但是你可以卖掉已有邮票来买不同的邮票。返回你能收集到的不同种邮票的最大数量。
    定义:
    class:PostmarksCollection
    method:numberOfDistinctPostmarks
    Parameters:int[],int[]
    Returns:int
    Methodsignature:publicintnumberOfDistinctPostmarks(int[]prices,int[]have)
    //为了进行测试,必须保证是public
    约束:
    1)N从1到50
    2)prices中的元素数量刚好是N个元素
    3)prices中的元素的值,从1到1,000,000
    4)have中的元素数量是0个到N个
    5)have中的每个元素是不同的
    6)have中的每个元素的值是从0到N-1.
    例如:
    1)
    {13,10,14,20}
    {3,0,2,1}
    Returns:4
    你已经拥有所有种类的邮票。
    2)
    {7,5,9,7}
    {}
    Returns:0
    你开始没有任何邮票,所以你也不能组任何事情。
    3)
    {4,13,9,1,5}
    {1,3,2}
    Returns:4
    卖掉邮票2,买入邮票0和4,(邮票2的价钱是9,邮票0的价钱是4,邮票4的价钱是5,卖掉2刚好买入0和4)
    4)
    {16,32,13,2,17,10,8,8,20,17}
    {7,0,4,1,6,8}
    Returns:8
    --------------------------------------------------------------------------------
    使用Java请在此处答题(请使用JDK5.0编译,编译不能通过者不计算分数)
    -----------------------------23757983230932--

     

    file_get_contents超时的问题

    请有使用file_get_contents的同学在调用前进行设置
    ini_set('default_socket_timeout', $seconds);
    当PHP读取php.ini配置文件中的所有设置信息的同时,它提供了采用ini_set()函数根据per-scrīpt原则更改这些设置的功能。此函数接收两个参数:需要调整的配置变量名,以及变量的新值。

    例如,在某脚本出现时增加最大执行时间(maximum execution time):

    <?php

    ini_set('max_execution_time', 600)
    ini_set('display_errors','1');//php默认是不显示错误的,这样可以把错误设置打开
    // more code

    ?>;

    这样的设置将仅仅影响被设置的脚本。一旦脚本执行完毕,该变量将自动恢复到原始值。

    <?php
    $ctx = stream_context_create(array(
        'http' => array(
            'timeout' => 1
            )
        )
    );
    file_get_contents("http://example.com/", 0, $ctx);
    ?>

    < ?php
    $file_contents = file_get_contents('http://www.ccvita.com/');
    echo $file_contents;
    ?>

    换成curl函数的使用示例:

    < ?php
    $ch = curl_init();
    $timeout = 5;
    curl_setopt ($ch, CURLOPT_URL, 'http://www.ccvita.com');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);

    echo $file_contents;
    ?>

    file_get_contents来post数据:

    HTTP POST with file_get_contents  
    $post_variables = array('usernamed' => 'rasmus');

    $content = http_build_query($post_variables);

    $content_length = strlen($content);

    $options = array(

        'http'=>array(

            'method'  => 'POST',

            'header'  =>

                  "Content-type: application/x-www-form-urlencoded\r\n" .  

                  "Content-length: $content_length\r\n",

            'content' => $content
        )

    );
    $context = stream_context_create($options);

    $index = file_get_contents('http://www.example.com/index.php', false, $context);
     

    discuz 7.0/7.1/7.2 和 jQuery 冲突兼容问题

    刚开始 郁闷了我好长时间..

    找了好多地方,网上给出的办法

     

    Discuz和jQuery的冲突有两点,在/include/javascript/common.js文件的
    57~64之间有如下代码:

    Array.prototype.push = function(value) {
    this[this.length] = value;
    return this.length;
    }

    function $(id) {
    return document.getElementById(id);
    }

    Discuz为了兼容低版本的IE,重写了Array对象的push方法,但在重写之前没有做任何判断,改为一下形式:

    if(typeof Array.prototype.push === 'undefined') {
    Array.prototype.push = function(value) {
    this[this.length] = value;
    return this.length;
    }
    }

    第二点就是Discuz也有$()函数,就只是为了实现getElementById?功能没有人家强大就别学人家用美元符号嘛,占用符号资源。应该学学百度,人家就用一个字符G,多低调不和别人争美元。
    关于$()函数的冲突,jQuery中给出了解决方法,jQuery.noConflict(),把美元让给你(看看人家多大肚)。

    我们的jQuery代码可以这样写:

    var jq = jQuery.noConflict(); //把$让给第一个实现它的库,用jq代替
    jq(function()
    {
    //**********************
    }
    );

    但是 描述不是很清晰...

    我自己改了下 ...解决 兼容问题 解决了

    <script src="jQuery.js" type="text/javascript"></script>

    <script type="text/javascript">
    $(function() {
    var jq=jQuery.noConflict(true); //将变量$的控制权让渡给其他库。这样可以确保jQuery不会与其他库的$对象发生冲突。
    alert(jq("div").html());//正常 //alert($("div").html());//报错
    });
    </script>
    <div> <p>aaaaaaaaaaaaaaaaa</p></div>
     
     
    那为什么能 var jq=jQuery.noConflict(true) 这么写呢?
    首先我们看jQuery的源代码:
    noConflict: function( deep ) {
    window.$ = _$;
    if ( deep )
    window.jQuery = _jQuery;
    return jQuery;
    }
    明显 ,当deep==true的时候,返回jQuery.
    所以我们var jq=jQuery.noConflict(true) 这样定义也就可以理解了。
    所以cssrain就可以代替jQuery了。从而确保jQuery不会与其他库的$对象发生冲突。

     

    Zend Guard与Zend Optimizer的关系及兼容性

    Zend Guard加密后的PHP源程序需要环境中安装Zend Optimizer才可以运行,

    同时Zend Optimizer在加密的过程中也可以实现优化代码的作用。

    以下为各个Zend Guard版本与Zend Optimizer各版本的对应关系:

    Zend Encoder / SafeGuard 3.1 (HOST ID) - Optimizer 2.5.x
    Zend Encoder / SafeGuard 3.6 (Zend ID) - Optimizer 2.5.2
    Zend Guard 4.x (Basic Encoding) - Optimizer 2.6.x
    Zend Guard 5.0 (PHP 4, Basic Encoding) - Optimizer 2.6.x
    Zend Guard 4.x (Full Obfuscation) - Optimizer 3.0.x
    Zend Guard 5.0 (PHP 4, Full Obfuscation) - Optimizer 3.0.x
    Zend Guard 5.0 (PHP 5, All Encoding) - Optimizer 3.3.x

    javascript图片预加载

    网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考虑流量的话,大可以像pconline一样每个页面只显示一张图片,让用户每看一张 图片就需要重新下载一下整个页面。不过,在web2.0时代,更多人愿意用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到 其他图片。

    知道了一张图片的地址,需要把它在一个固定大小的html容器(可以是div等)里边显示出来,最重要的当然是需要知道这张即将显示的图片的宽和高,然后再结合容器的宽和高,按照一定的缩放比例使图片显示出来。因此,实现图片预加载就成为图片浏览器的核心功能了。

    做过图片翻转效果的朋友其实都知道,要让图片轮换的时候不出现等待,最好是先让图片下载到本地,让浏览器缓存起来。这时,一般都会用到js里边的Image对象。一般的手段无非这样:
    function preLoadImg(url) {
    var img = new Image();
    img.src = url;
    }
    通过调用preLoadImg函数,传入图片的url,就能使图片预先下载下来了。实际上,这里用到的预下载功能也和这基本一致。图片预下载下来后,通过 img的width和height属性,就能知道图片的宽和高了。但是需要考虑到,在做图片浏览器功能时,图片都是实时显示的。比如你点了显示的按钮,这 个时候才会调用上边类似的代码来加载图片。因此,如果你直接用img.width的时候,图片还没有完全下载下来。因此,需要用一些异步的方法,等到图片 下载完毕的时候才会再对img的width和height进行调用。

    实现这样的异步方法实际上不难,图片的下载完毕事件也很简单,就是简单的onload事件。因此,我们可以写出下面的代码:
    function loadImage(url, callback) {
    var img = new Image();
    img.src = url;

    img.onload = function(){ //图片下载完毕时异步调用callback函数。
        callback.call(img);   // 将callback函数this指针切换为img。
    };
    }

    好了,再来写一个测试用例。
    function imgLoaded(){
    alert(this.width);
    }
    <input type="button" value="loadImage" onclick="loadImage('aaa.jpg',imgLoaded)"/>

    在firefox中测试一下,发现不错,果然和预想的效果一样,在图片下载后,就会弹出图片的宽度来。无论点击多少次或者刷新结果都一样。

    不过,做到这一步,先别高兴太早——还需要考虑一下浏览器的兼容性,于是,赶紧到ie里边测试一下。没错,同样弹出了图片的宽度。但是,再点击load的时候,情况就不一样了,什么反应都没有了。刷新一下,也同样如此。

    经过对多个浏览器版本的测试,发现ie6、opera都会这样,而firefox和safari则表现正常。其实,原因也挺简单的,就是因为浏览器 的缓存了。当图片加载过一次以后,如果再有对该图片的请求时,由于浏览器已经缓存住这张图片了,不会再发起一次新的请求,而是直接从缓存中加载过来。对于 firefox和safari,它们视图使这两种加载方式对用户透明,同样会引起图片的onload事件,而ie和opera则忽略了这种同一性,不会引 起图片的onload事件,因此上边的代码在它们里边不能得以实现效果。

    怎么办呢?最好的情况是Image可以有一个状态值表明它是否已经载入成功了。从缓存加载的时候,因为不需要等待,这个状态值就直接是表明已经下载了,而从http请求加载时,因为需要等待下载,这个值显示为未完成。这样的话,就可以搞定了。

    经过一些分析,终于发现一个为各个浏览器所兼容的Image的属性——complete。所以,在图片onload事件之前先对这个值做一下判断即可。最后,代码变成如下的样子:
    function loadImage(url, callback) {
        var img = new Image(); //创建一个Image对象,实现图片的预下载
        img.src = url;
      
        if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
            callback.call(img);
            return; // 直接返回,不用再处理onload事件
        }

        img.onload = function () { //图片下载完毕时异步调用callback函数。
            callback.call(img);//将回调函数的this替换为Image对象
        };
    };
    经过这么一番折腾,总算是让各个浏览器都能满足我们的目标了。虽然代码很简单,但是却把图片浏览器中最核心的问题解决掉了,接下来你所要做的,仅仅是图片如何呈现的问题了。

    忘记你我的故事….一个温馨的爱情电影..《爱久弥新》

    也许有一天因为种种原因忘记彼此

    只不过有的人忘的快 有点人忘的慢

    但是无论我们忘得快或是忘得慢

    可生活还是要继续

    我们总会熬过去......

    所以那些失去的人们就要学会忘记

    过去的东西总会被遗忘

    在一起的人们应该懂得珍惜 珍惜今天..珍惜现在...

    在线观看地址:

     

    [separator]

    http://kankan.xunlei.com/vod/movie/56/56819.shtml

    推荐观看电影《爱有来生》.. 心灵的旅行..

     

     

    刚开始看的时候感觉没什么的电影 但是看到后面真的 好震撼:

    尤其男主角的一句话:"我想给她的一切,她都有了。其实我想要的不就是给她幸福吗?

    所以只要她快乐的,这快乐是不是我给的,能不能等到她,都不重要了。"

    真的一句话诠释了爱情的真谛...爱情并不一定就要得到ta,而是要ta快乐...只要她(他)活得幸福就好!

    最后看完电影我流泪了..( ~~~~(>_<)~~~~ ) 尤其结局超震撼的....

    突然灵感而生想起了一首诗:

    纤云弄巧,飞星传恨,银汉迢迢暗度。金风玉露一相逢,便胜却、人间无数。
    柔情似水,佳期如梦,忍顾鹊桥归路。
    两情若是久长时,又岂在、朝朝暮暮。

    最后感谢导演让我做了一次心灵的旅行...大家有时间也来看看吧..

    下面的这个是迅雷地址

    [separator]

    迅雷在线观看的地址: http://kankan.xunlei.com/vod/movie/56/56765.shtml

     

    php 二维数组排序

    用到二维数组排序,到手册里面查了下,有这样一个很不错的函数,和数据库里面的order by功能是一样的,把二位数组当成一个数据库的表。数组的key就相当于标的列,数组的value相当于标的行:
    $XML_deed_temp=array(
    array(’deed_id’=>1,’total’=>’b101′),
    array(’deed_id’=>2,’total’=>’3′),
    array(’deed_id’=>2,’total’=>’4′),
    array(’deed_id’=>5,’total’=>’a5′),
    array(’deed_id’=>8,’total’=>’a8′),
    array(’deed_id’=>12,’total’=>’a12′),
    array(’deed_id’=>11,’total’=>’a11′),
    array(’deed_id’=>6,’total’=>’a6′)
    );

    上面的数组可以看成如下一个数据库表:
    deed_id total
    —————————-
    1 b101
    2 3
    2 4
    5 a5
    8 a8
    12 a12
    11 a11
    6 a6
    ——————————-
    排序的时候先要取出其中的一列,然后就可以这样:
    array_multisort($sortdeed,, SORT_ASC, $XML_deed_temp);
    $XML_deed_temp就是要排序的数组,$sortdeed,就是要排序的列的数组(这个数组要先foreach $XML_deed_temp然后将deed_id那一列取出放到$sortdeed数组里面),如果要实现order by col1,col2这样的,可以把多个列取出进行排序,排序先按col1排,再按col2排

    $XML_deed_temp=array(
    array('deed_id'=>1,'total'=>'b101'),
    array('deed_id'=>2,'total'=>'3'),
    array('deed_id'=>2,'total'=>'4'),
    array('deed_id'=>5,'total'=>'a5'),
    array('deed_id'=>8,'total'=>'a8'),
    array('deed_id'=>12,'total'=>'a12'),
    array('deed_id'=>11,'total'=>'a11'),
    array('deed_id'=>6,'total'=>'a6')
    );
    foreach($XML_deed_temp as $t_k=>$t_v){
    $deed_id[]=$t_v['deed_id'];
    $total[]=$t_v['total'];
    //print_r($t_v);
    }
    array_multisort($deed_id, SORT_ASC, $total, SORT_ASC, $XML_deed_temp);
    print_r($XML_deed_temp);
     

    © 2018 技术控 All Rights Reserved