<?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 掉
-
这些说法都对
- 根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
- 当前代码状态被保存
- 代码执行被切换到预定义的异常处理器函数
请举例说明在你的开发过程中用什么方法来加快页面的加载速度
要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具
$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";
}
?>
有时在类型之间强制转换时确切地会发生什么可能不是很明显。更多信息见如下小节:
字符串转换为数值 ¶
当一个字符串被当作一个数值来取值,其结果和类型如下:
如果该字符串没有包含 '.','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 码和字符间的转换。
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
";
}
?>
- 6,7,8,9,
- 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 filters中FILTER_SANITIZE_EMAIL的作用是删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
str_replace
(PHP 4, PHP 5, PHP 7)
str_replace — 子字符串替换
说明 ¶
该函数返回一个字符串或者数组。该字符串或数组是将 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;
?>
注释 ¶
参见 ¶
- str_ireplace() - str_replace 的忽略大小写版本
- substr_replace() - 替换字符串的子串
- preg_replace() - 执行一个正则表达式的搜索和替换
- strtr() - 转换指定字符
array_intersect_key
(PHP 5 >= 5.1.0, PHP 7)
array_intersect_key — 使用键名比较计算数组的交集
说明 ¶
$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 时被认为相等。换句话说,执行的是严格类型检查,因此字符串的表达必须完全一样。
- array_diff() - 计算数组的差集
- array_udiff() - 用回调函数比较数据来计算数组的差集
- array_diff_assoc() - 带索引检查计算数组的差集
- array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
- array_udiff_assoc() - 带索引检查计算数组的差集,用回调函数比较数据
- array_udiff_uassoc() - 带索引检查计算数组的差集,用回调函数比较数据和索引
- array_diff_key() - 使用键名比较计算数组的差集
- array_diff_ukey() - 用回调函数对键名比较计算数组的差集
- array_intersect() - 计算数组的交集
- array_intersect_assoc() - 带索引检查计算数组的交集
- array_intersect_uassoc() - 带索引检查计算数组的交集,用回调函数比较索引
- array_intersect_ukey() - 用回调函数比较键名来计算数组的交集
三者都是 用来在脚本中插入其他档案,视乎 url_allow_fopen 是否核准,这个档案可以从系统内部或外部取得。但他们之间也有微细的分别:</br>include(): 这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。</br>include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。</br>require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行
echo new stdClass == new stdClass, '-', new stdClass !== new stdClass 输出 1-1
PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。 很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符['xxx']要方便不少。于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中。 然而PHP中没有Javascript里面 var object = {}; 这样的语法。 PHP创建空对象至少可以使用3种方法实现 方法一:写一个空类 勉强能完成任务,但是特别没有格局。
StdClass类是PHP中的一个基类,然而比较诡异的是PHP手册里面血几乎没有提到过这个类,至少在PHP索引中是搜索不到这个类的。 StdClass类没有任何成员方法,也没有任何成员属性,实例化以后就是一个空对象。
这种方法就是把一个空的JSON对象通过json_decode()转变为PHP的StdClass空对象。 同样的道理,你可以将一个数组通过json_encode()转成JSON,再通过json_decode()将JSON转为StdClass对象, 关于这两个函数,可以参考PHP手册。
|
用PHP打印出前一天的时间格式是2006-5-10 22:21:21 echo date('Y-m-d 选项:i:s', strtotime('-1 days'));