<?php $x=dir("."); while($y=$x->read()) { echo $y; } $x->close(); ?>
显示当前文件夹下的所有文件名
能创建多级目录的PHP函数
<?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 5foreach ($colors as &$color) { $color = strtoupper($color);}unset($color); /* ensure that following writes to$color will not modify the last array element */// Workaround for older versionsforeach ($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 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个 值赋给变量 $var,$var 就成了一个 。如果又把一个 赋给 $var,那它就成了一个。
PHP 的自动类型转换的一个例子是加法运算符“+”。如果任何一个操作数是,则所有的操作数都被当成,结果也是。否则操作数会被解释为,结果也是。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。
<?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)?>
如果上面两个例子看上去古怪的话,参见。
如果要强制将一个变量当作某种类型来求值,参见一节。如果要改变一个变量的类型,参见 。
如果想要测试本节中任何例子的话,可以用 函数。
Note:
自动转换为 数组 的行为目前没有定义。
此外,由于 PHP 支持使用和数组下标同样的语法访问字符串下标,以下例子在所有 PHP 版本中都有效:
<?php$a = 'car'; // $a is a string$a[0] = 'b'; // $a is still a stringecho $a; // bar?>
请参阅一节以获取更多信息。
类型强制转换
PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。
<?php$foo = 10; // $foo is an integer$bar = (boolean) $foo; // $bar is a boolean?>
允许的强制转换有:
- (int), (integer) - 转换为整形
- (bool), (boolean) - 转换为布尔类型
- (float), (double), (real) - 转换为浮点型
- (string) - 转换为字符串
- (array) - 转换为数组
- (object) - 转换为对象
- (unset) - 转换为 (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
所定义),该字符串将被当成 来取值。其它所有情况下都被作为 来取值。
该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 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)。
本节中的示例可以通过复制/粘贴到下面的代码中来显示:
<?phpecho "\$foo==$foo; type is " . gettype ($foo) . "<br />\n";?>
不要想像在 C 语言中的那样,通过将一个字符转换成整数以得到其代码。使用函数 和 实现 ASCII 码和字符间的转换。
is_a
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
说明
<?php
// define a classclass WidgetFactory{ var $oink = 'moo';}// create a new object$WF = new WidgetFactory();if (is_a($WF, 'WidgetFactory')) { echo "yes, \$WF is still a WidgetFactory\n";}?>sort 数组排序
可以给定第二个参数按照不同的要求排序$fruits = array("lemon", "orange", "banana", "apple");sort($fruits);foreach ($fruits as $key => $val) { echo "fruits[" . $key . "] = " . $val . "\n";}?>
以上例程会输出:
fruits[0] = applefruits[1] = bananafruits[2] = lemonfruits[3] = orange
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)
$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 — 子字符串替换
说明
$search
, $replace
, $subject
[, int &$count
] ) 该函数返回一个字符串或者数组。该字符串或数组是将 subject
中全部的 search
都被 replace
替换之后的结果。
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 和 。
参数
如果 search
和 replace
为数组,那么 str_replace() 将对 subject
做二者的映射替换。如果 replace
的值的个数少于 search
的个数,多余的替换将使用空字符串来进行。如果 search
是一个数组而 replace
是一个字符串,那么 search
中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。
如果 search
和 replace
都是数组,它们的值将会被依次处理。
-
查找的目标值,也就是 needle。一个数组可以指定多个目标。
-
search
的替换值。一个数组可以被用来指定多重替换。 -
执行替换的数组或者字符串。也就是 haystack。
如果
subject
是一个数组,替换操作将遍历整个subject
,返回值也将是一个数组。 -
如果被指定,它的值将被设置为替换发生的次数。
search
replace
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\nLine 2\rLine 3\r\nLine 4\n";$order = array("\r\n", "\n", "\r");$replace = '<br />';// 首先替换 \r\n 字符,因此它们不会被两次转换$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: 此函数可安全用于二进制对象。
了解替换顺序
由于 str_replace() 的替换时从左到右依次进行的,进行多重替换的时候可能会替换掉之前插入的值。参见该文档的范例。
Note:
该函数区分大小写。使用 可以进行不区分大小写的替换。
参见
- - str_replace 的忽略大小写版本
- - 替换字符串的子串
- - 执行一个正则表达式的搜索和替换
- - 转换指定字符
array_intersect_key
(PHP 5 >= 5.1.0, PHP 7)
array_intersect_key — 使用键名比较计算数组的交集
说明
$array1
, array $array2
[, array $ ...
] ) array_intersect_key() 返回一个数组,该数组包含了所有出现在 array1
中并同时出现在所有其它参数数组中的键名的值。
参数
-
The array with master keys to check.
-
An array to compare keys against.
-
A variable list of arrays to compare.
array1
array2
array
返回值
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
PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符['xxx']要方便不少。于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中。然而PHP中没有Javascript里面 var object = {}; 这样的语法。PHP创建空对象至少可以使用3种方法实现方法一:写一个空类勉强能完成任务,但是特别没有格局。
|
用PHP打印出前一天的时间格式是2006-5-10 22:21:21 echo date('Y-m-d 选项:i:s', strtotime('-1 days'));