• 学习笔记 2016-04-12


    <?php  $x=dir(".");  while($y=$x->read())  {  echo $y; }  $x->close(); ?> 

    显示当前文件夹下的所有文件名


    能创建多级目录的PHP函数

    <?php
          function createdir($path,$mode){
                  if (is_dir($path)){  
                          echo "目录'" . $path . "'已经存在";
                  }else{ 
                              $re=mkdir($path,$mode,true); //第三个参数为true即可以创建多极目录
                             if ($re){
                                     echo "目录创建成功";
                             }else{
                                     echo "目录创建失败";
                             }
                     }
             }
         $path="c:/test/test"; //要创建的目录
         $mode=0755; //创建目录的模式
         createdir($path,$mode);//测试
     ?>


    <?php
    $arr = "a";
    $arr[0]="b";
    echo $arr;
    echo $arr[0]; ?>

    输出 b b

    原因是:

    $a = 'abcdef'; 请取出$a的值并打印出第一个字母

    echo $a{0} 或 echo substr($a,0,1)

    //另外

    直接改变数组的值自 PHP 5 起可以通过引用传递来做到。之前的版本需要需要采取变通的方法:

    Example #10 在循环中改变单元

    <?php
    // PHP 5
    foreach ($colors as &$color) {
        $color = strtoupper($color);
    }
    unset($color); /* ensure that following writes to
    $color will not modify the last array element */

    // Workaround for older versions
    foreach ($colors as $key => $color) {
        $colors[$key] = strtoupper($color);
    }

    print_r($colors);
    ?>

    以上例程会输出:

    Array
    (
        [0] => RED
        [1] => BLUE
        [2] => GREEN
        [3] => YELLOW
    )

    注意 使用引用 foreach后 一定要把最后一个 unset 掉

    
    
    [单选题]php程序中,当异常被触发时,通常会发生
    1.  这些说法都对
    2.  根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
    3.  当前代码状态被保存
    4.  代码执行被切换到预定义的异常处理器函数

    
    
    请举例说明在你的开发过程中用什么方法来加快页面的加载速度
    要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具

    
    

    $a = '100abc';$b = '300abc';$c = $a + $b;echo $c;

    输出 400

    类型转换的判别 ¶

    PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个 string 值赋给变量 $var$var 就成了一个 string。如果又把一个integer 赋给 $var,那它就成了一个integer

    PHP 的自动类型转换的一个例子是加法运算符“+”。如果任何一个操作数是float,则所有的操作数都被当成float,结果也是float。否则操作数会被解释为integer,结果也是integer。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。

    <?php
    $foo = "0";  // $foo 是字符串 (ASCII 48)
    $foo += 2;   // $foo 现在是一个整数 (2)
    $foo = $foo + 1.3;  // $foo 现在是一个浮点数 (3.3)
    $foo = 5 + "10 Little Piggies"; // $foo 是整数 (15)
    $foo = 5 + "10 Small Pigs";     // $foo 是整数 (15)
    ?>

    如果上面两个例子看上去古怪的话,参见字符串转换为数值

    如果要强制将一个变量当作某种类型来求值,参见类型强制转换一节。如果要改变一个变量的类型,参见 settype()

    如果想要测试本节中任何例子的话,可以用 var_dump() 函数。

    Note:

    自动转换为 数组 的行为目前没有定义。

    此外,由于 PHP 支持使用和数组下标同样的语法访问字符串下标,以下例子在所有 PHP 版本中都有效:

    <?php
    $a    = 'car'; // $a is a string
    $a[0] = 'b';   // $a is still a string
    echo $a;       // bar
    ?>

    请参阅存取和修改字符串中的字符一节以获取更多信息。

    类型强制转换 ¶

    PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。

    <?php
    $foo = 10;   // $foo is an integer
    $bar = (boolean) $foo;   // $bar is a boolean
    ?>

    允许的强制转换有:

    • (int), (integer) - 转换为整形 integer
    • (bool), (boolean) - 转换为布尔类型 boolean
    • (float), (double), (real) - 转换为浮点型 float
    • (string) - 转换为字符串 string
    • (array) - 转换为数组 array
    • (object) - 转换为对象 object
    • (unset) - 转换为 NULL (PHP 5)

    (binary) 转换和 b 前缀转换支持为 PHP 5.2.1 新增。

    注意在括号内允许有空格和制表符,所以下面两个例子功能相同:

    <?php
    $foo = (int) $bar;
    $foo = ( int ) $bar;
    ?>

    将字符串文字和变量转换为二进制字符串:

    <?php
    $binary = (binary)$string;
    $binary = b"binary string";
    ?>

    Note:

    可以将变量放置在双引号中的方式来代替将变量转换成字符串:

    <?php
    $foo = 10;            // $foo 是一个整数
    $str = "$foo";        // $str 是一个字符串
    $fst = (string) $foo; // $fst 也是一个字符串

    // 输出 "they are the same"
    if ($fst === $str) {
        echo "they are the same";
    }
    ?>

    有时在类型之间强制转换时确切地会发生什么可能不是很明显。更多信息见如下小节:

    
    
    add a note add a note

    字符串转换为数值 ¶

    当一个字符串被当作一个数值来取值,其结果和类型如下:

    如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成integer 来取值。其它所有情况下都被作为 float 来取值。

    该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。

    <?php
    $foo = 1 + "10.5";                // $foo is float (11.5)
    $foo = 1 + "-1.3e3";              // $foo is float (-1299)
    $foo = 1 + "bob-1.3e3";           // $foo is integer (1)
    $foo = 1 + "bob3";                // $foo is integer (1)
    $foo = 1 + "10 Small Pigs";       // $foo is integer (11)
    $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
    $foo = "10.0 pigs " + 1;          // $foo is float (11)
    $foo = "10.0 pigs " + 1.0;        // $foo is float (11)     
    ?>

    更多信息可以参考 Unix 手册中的 strtod(3)。

    本节中的示例可以通过复制/粘贴到下面的代码中来显示:

    <?php
    echo "$foo==$foo; type is " . gettype ($foo) . "<br /> ";
    ?>

    不要想像在 C 语言中的那样,通过将一个字符转换成整数以得到其代码。使用函数 ord() 和 chr() 实现 ASCII 码和字符间的转换。

    
    
    
    
    
    
    哪个函数可以返回FTP服务器上文件的大小?
    •  
       ftp_size()
     

    
    

    is_a

    (PHP 4 >= 4.2.0, PHP 5, PHP 7)

    is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE

    
    

    说明 ¶

    <?php
    // define a class
    class WidgetFactory
    {
      var $oink = 'moo';
    }

    // create a new object
    $WF = new WidgetFactory();

    if (is_a($WF, 'WidgetFactory')) {
      echo "yes, $WF is still a WidgetFactory ";
    }
    ?>


    <?php for($i=6;$i<10;$i++) echo $i; echo ",";?>
    1.  6,7,8,9,
    2.  6789, 选择B  如果for循环不加{} 则只认识一句  认为在循环中


    sort 数组排序

    可以给定第二个参数按照不同的要求排序
    $fruits = array("lemon", "orange", "banana", "apple");
    sort($fruits);
    foreach ($fruits as $key => $val) {
        echo "fruits[" . $key . "] = " . $val . " ";
    }

    ?>

    以上例程会输出:

    fruits[0] = apple
    fruits[1] = banana
    fruits[2] = lemon
    fruits[3] = orange

    成功时返回 TRUE, 或者在失败时返回 FALSE

    
    
    
    
    有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)
    <?php
    function BubbleSort(&$arr)
    {
    $cnt=count($arr);
    $flag=1;
    for($i=0;$i<$cnt;$i++)
    {
    if($flag==0)
    {
    return;
    }
    $flag=0;
    for($j=0;$j<$cnt-$i-1;$j++)
    {
    if($arr[$j]>$arr[$j+1])
    {
    $tmp=$arr[$j];
    $arr[$j]=$arr[$j+1];
    $arr[$j+1]=$tmp;
    $flag=1;
    }
    }
    }
    }
    $test=array(1,3,6,8,2,7);
    BubbleSort($test);
    var_dump($test);
    ?>
    
    
    

      


    关于PHP数组的说法,不对的是:
    选项:处理PHP数组,foreach的效率要比for高很多,是因为foreach走的是链表的遍历。 选项:PHP数组底层采用的是循环链表(X 是双向链表),正向、反向遍历数组都很方便。
    选项:无论是 array(1, 2, 3) 还是array(1 => 2, 2=> 4)等,本质上都是hash_table。
    选项:PHP数组插入和删除操作的时间复杂度都是O(1)。

    简述UCenter的单点登录机制
      ??????????????????????
    所谓单点登录,无非就是几个站点共用一个用户中心,实现同步登陆,同步退出。 其实最终还是用户去登录,只是采用了ajax (javascript利用src异步跨域调用)用户不会发现。 而且利用了p3p头实现了,不同域名,单点登录(ucenter用的cookie) 缺点就是采用ajax 客服端请求 ,如果有10个以上应用,登录速度就慢下来了
    PHP filters中FILTER_SANITIZE_EMAIL的作用是删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
     

    str_replace

    (PHP 4, PHP 5, PHP 7)

    str_replace — 子字符串替换

    说明 ¶

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

    该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

    如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()

    参数 ¶

    如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

    如果 search 和 replace 都是数组,它们的值将会被依次处理。

    search

    查找的目标值,也就是 needle。一个数组可以指定多个目标。

    replace

    search 的替换值。一个数组可以被用来指定多重替换。

    subject

    执行替换的数组或者字符串。也就是 haystack

    如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。

    count

    如果被指定,它的值将被设置为替换发生的次数。

    返回值 ¶

    该函数返回替换后的数组或者字符串。

    范例 ¶

    Example #1 str_replace() 基本范例

    <?php
    // 赋值: <body text='black'>
    $bodytag str_replace("%body%""black""<body text='%body%'>");

    // 赋值: Hll Wrld f PHP
    $vowels = array("a""e""i""o""u""A""E""I""O""U");
    $onlyconsonants str_replace($vowels"""Hello World of PHP");

    // 赋值: You should eat pizza, beer, and ice cream every day
    $phrase  "You should eat fruits, vegetables, and fiber every day.";
    $healthy = array("fruits""vegetables""fiber");
    $yummy   = array("pizza""beer""ice cream");

    $newphrase str_replace($healthy$yummy$phrase);

    // 赋值: 2
    $str str_replace("ll""""good golly miss molly!"$count);
    echo 
    $count;
    ?>

    Example #2 可能的 str_replace() 替换范例

    <?php
    // 替换顺序
    $str     "Line 1 Line 2 Line 3 Line 4 ";
    $order   = array(" "" "" ");
    $replace '<br />';

    // 首先替换   字符,因此它们不会被两次转换
    $newstr str_replace($order$replace$str);

    // 输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...
    // 由于从左到右依次替换,最终 E 被 F 替换
    $search  = array('A''B''C''D''E');
    $replace = array('B''C''D''E''F');
    $subject 'A';
    echo 
    str_replace($search$replace$subject);

    // 输出: apearpearle pear
    // 由于上面提到的原因
    $letters = array('a''p');
    $fruit   = array('apple''pear');
    $text    'a p';
    $output  str_replace($letters$fruit$text);
    echo 
    $output;
    ?>

    注释 ¶

    Note此函数可安全用于二进制对象。

    Caution

    了解替换顺序

    由于 str_replace() 的替换时从左到右依次进行的,进行多重替换的时候可能会替换掉之前插入的值。参见该文档的范例。

    Note:

    该函数区分大小写。使用 str_ireplace() 可以进行不区分大小写的替换。

    参见 ¶

    array_intersect_key

    (PHP 5 >= 5.1.0, PHP 7)

    array_intersect_key — 使用键名比较计算数组的交集

    说明 ¶

    array array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )

    array_intersect_key() 返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。

    参数 ¶

    array1

    The array with master keys to check.

    array2

    An array to compare keys against.

    array

    A variable list of arrays to compare.

    返回值 ¶

    Returns an associative array containing all the entries of array1 which have keys that are present in all arguments.

    范例 ¶

    Example #1 array_intersect_key() 例子

    <?php
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

    var_dump(array_intersect_key($array1, $array2));
    ?>

    以上例程会输出:

    array(2) {
      ["blue"]=>
      int(1)
      ["green"]=>
      int(3)
    }
    

    上例中可以看到只有 'blue' 和 'green' 两个键名出现在两个数组中,因此被返回。此外注意 'blue' 和 'green' 的值在两个数组中是不同的。但因为只检查键名,因此还是匹配。返回的值只是 array1 中的。

    在 key => value 对中的两个键名仅在 (string) $key1 === (string) $key2 时被认为相等。换句话说,执行的是严格类型检查,因此字符串的表达必须完全一样。



    三者都是 用来在脚本中插入其他档案,视乎 url_allow_fopen 是否核准,这个档案可以从系统内部或外部取得。但他们之间也有微细的分别:</br>include(): 这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。</br>include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。</br>require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行
    echo new stdClass == new stdClass, '-', new stdClass !== new stdClass    输出 1-1
    stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。stdClass是PHP的一个基类,所有的类几乎都继承 这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型 的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
    PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。
    很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符['xxx']要方便不少。于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中。
    然而PHP中没有Javascript里面 var object = {}; 这样的语法。
    PHP创建空对象至少可以使用3种方法实现
    方法一:写一个空类
    勉强能完成任务,但是特别没有格局。
    1. <?php
    2.         class cfg {                
    3.         }        
    4.         $cfg = new cfg;
    5.         $cfg->dbhost = 'www.51-n.com';
    6.         echo $cfg->dbhost;
    7. ?>
    复制代码
    方法二:实例化 StdClass 类
    StdClass类是PHP中的一个基类,然而比较诡异的是PHP手册里面血几乎没有提到过这个类,至少在PHP索引中是搜索不到这个类的。
    StdClass类没有任何成员方法,也没有任何成员属性,实例化以后就是一个空对象。
    1. <?php
    2.         $cfg = new StdClass();
    3.         $cfg->dbhost = 'www.51-n.com';
    4.         echo $cfg->dbhost;
    5. ?>
    复制代码
    方法三:折腾json_encode()和json_decode()
    这种方法就是把一个空的JSON对象通过json_decode()转变为PHP的StdClass空对象。
    同样的道理,你可以将一个数组通过json_encode()转成JSON,再通过json_decode()将JSON转为StdClass对象,
    关于这两个函数,可以参考PHP手册。
    1. <?php
    2.         $cfg = json_decode('{}');
    3.         $cfg->dbhost = 'www.51-n.com';
    4.         echo $cfg->dbhost;
    5. ?>
    复制代码


    用PHP打印出前一天的时间格式是2006-5-10 22:21:21   echo date('Y-m-d 选项:i:s', strtotime('-1 days'));
    下面哪个正则表达式,可以从服务器上取到访问域名第二层?preg_replace("/.*?([^./]+)(.(com|net|org|gov|edu))?.[^./]+$/","\1", $_SERVER['HTTP_HOST']);
    set_time_limit() 用来控制php脚本的最大执行时间,它的默认值是(秒) 30秒
     
  • 相关阅读:
    mysql添加索引
    【最短路】道路重建 @upcexam5797
    【数论&想法题】小C的问题 @"科林明伦杯"哈尔滨理工大学第八届程序设计竞赛
    【最大公约数&链表】权值 @upcexam5921
    【组合数】微信群 @upcexam6016
    【二维树状数组】计数问题 @JSOI2009/upcexam5911
    【组合&取补集】数三角形 @CQOI2014/BZOJ3505/upcexam3843
    【LCA&倍增】货物运输 @upcexam5909
    【组合数】[NOIP2011]选择客栈[c++]
    【模拟】[NOIP2011]铺地毯[c++]
  • 原文地址:https://www.cnblogs.com/clphp/p/5381579.html
Copyright © 2020-2023  润新知