<?php
$a = array("a", "b", "c", "d");
$index = array_search("a", $a);
var_dump($index);die;
if ($index == false) echo "在数组a中未发现字符'a'";else echo "index=".$index;
?>
输出在数组a中未发现字符'a' ?????????????因为 返回 a的键 是 int 0 那么 0 就是false 所以。。。 (小心陷阱)
array_search(PHP 4 >= 4.0.5, PHP 5, PHP 7)
array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
说明 ¶
在 haystack
中搜索 needle
参数。
参数 ¶
-
搜索的值。
Note:
如果
needle
是字符串,则比较以区分大小写的方式进行。 -
这个数组。
-
如果可选的第三个参数
strict
为TRUE
,则 array_search() 将在haystack
中检查完全相同的元素。 这意味着同样检查haystack
里needle
的 类型,并且对象需是同一个实例。
needle
haystack
strict
返回值 ¶
如果找到了 needle
则返回它的键,否则返回 FALSE
。
如果 needle
在 haystack
中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value
来代替。
更新日志 ¶
版本 | 说明 |
---|---|
5.3.0 | As with all internal PHP functions as of 5.3.0, array_search() returns NULL if invalid parameters are passed to it. |
4.2.0 | 在 PHP 4.2.0 之前,array_search() 在失败时返回 NULL 而不是 FALSE 。 |
范例 ¶
Example #1 array_search() 例子
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
?>
参见 ¶
- array_keys() - 返回数组中部分的或所有的键名
- array_values() - 返回数组中所有的值
- array_key_exists() - 检查给定的键名或索引是否存在于数组中
- in_array() - 检查数组中是否存在某个值
strpos
(PHP 4, PHP 5, PHP 7)
strpos — 查找字符串首次出现的位置
说明 ¶
返回 needle
在 haystack
中首次出现的数字位置。
参数 ¶
-
在该字符串中进行查找。
-
如果
needle
不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。 -
如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。和 strrpos()、 strripos()不一样,这个偏移量不能是负数。
haystack
needle
offset
范例 ¶
Example #1 使用 ===
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,
// 因为 'a' 是第 0 位置上的(第一个)字符。
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
?>
Example #2 使用 !==
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// 使用 !== 操作符。使用 != 不能像我们期待的那样工作,
// 因为 'a' 的位置是 0。语句 (0 != false) 的结果是 false。
if ($pos !== false) {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
} else {
echo "The string '$findme' was not found in the string '$mystring'";
}
?>
Example #3 使用位置偏移量
<?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>
注释 ¶
Note: 此函数可安全用于二进制对象。
参见 ¶
- stripos() - 查找字符串首次出现的位置(不区分大小写)
- strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
- strripos() - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
- strstr() - 查找字符串的首次出现
- strpbrk() - 在字符串中查找一组字符的任何一个字符
- substr() - 返回字符串的子串
- preg_match() - 执行一个正则表达式匹配
------------------------------------
简述两种屏蔽php程序的notice警告的方法
初始化变量,文件开始设置错误级别或者修改php.ini 设置error_reporting set_error_handler 和 @抑制错误 1 在程序中添加:error_reporting (E_ALL & ~E_NOTICE); 2 或者修改php.ini中的:error_reporting = E_ALL 改为:error_reporting = E_ALL & ~E_NOTICE 3 error_reporting(0);或者修改php.inidisplay_errors=Off
<?php if($i=""){echo "a";} else{echo "b";}?> 输出 b 注意 此处 $i = "" 是将$i赋值为空 没问题 所以 $i是 "" 所以否 选择输出 b
print_r
(PHP 4, PHP 5, PHP 7)
print_r — 打印关于变量的易于理解的信息。
描述 ¶
$expression
[, bool $return
] )
Note: 参数
return
是在 PHP 4.3.0 的时候加上的
print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a);
?>
</pre>
上边的代码将输出:
<pre> Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ) ) </pre>
如果想捕捉 print_r() 的输出,可使用 return
参数。若此参数设为 TRUE
,print_r() 将不打印结果(此为默认动作),而是返回其输出。
Example #1 return
参数示例
<?php
$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r ($b, true); //$results 包含了 print_r 的输出结果
?>
(PHP 4, PHP 5, PHP 7)
print — 输出字符串
参数 ¶
-
输入数据。
arg
返回值 ¶
总是返回 1。
范例 ¶
Example #1 print 范例
<?php
print("Hello World");
print "print() also works without parentheses.";
print "This spans
multiple lines. The newlines will be
output as well";
print "This spans\nmultiple lines. The newlines will be\noutput as well.";
print "escaping characters is done \"Like this\".";
// 可以在打印语句中使用变量
$foo = "foobar";
$bar = "barbaz";
print "foo is $foo"; // foo is foobar
// 也可以使用数组
$bar = array("value" => "foo");
print "this is {$bar['value']} !"; // this is foo !
// 使用单引号将打印变量名,而不是变量的值
print 'foo is $foo'; // foo is $foo
// 如果没有使用任何其他字符,可以仅打印变量
print $foo; // foobar
- echo - 输出一个或多个字符串
- printf() - 输出格式化字符串
- flush() - 刷新输出缓冲
- Heredoc syntax
参数 ¶
-
这个数组。
array
返回值 ¶
current() 函数返回当前被内部指针指向的数组单元的值,并不移动指针。如果内部指针指向超出了单元列表的末端,current() 返回 FALSE
。
范例 ¶
Example #1 使用 current() 系列函数的例子
<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';
$arr = array();
var_dump(current($arr)); // bool(false)
$arr = array(array());
var_dump(current($arr)); // array(0) { }
?>
User Contributed Notes 10 notes
file
(PHP 4, PHP 5, PHP 7)
file — 把整个文件读入一个数组中
说明 ¶
$filename
[, int $flags
= 0 [, resource $context
]] )
把整个文件读入一个数组中。
Note:
你可以通过 file_get_contents() 以字符串形式获取文件的内容。
参数 ¶
-
文件的路径。
Tip如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议,注意其用法及其可提供的预定义变量。
-
可选参数
flags
可以是以下一个或多个常量:- 在 include_path 中查找文件。
- 在数组每个元素的末尾不要添加换行符
- 跳过空行
FILE_USE_INCLUDE_PATH
FILE_IGNORE_NEW_LINES
FILE_SKIP_EMPTY_LINES
-
A context resource created with the stream_context_create() function.
Note: 在 PHP 5.0.0 中增加了对上下文(Context)的支持。有关上下文(Context)的说明参见 Streams。
filename
flags
context
返回值 ¶
Returns the file in an array. Each element of the array corresponds to a line in the file, with the newline still attached. Upon failure, file() returns FALSE
.
Note:
Each line in the resulting array will include the line ending, unless
FILE_IGNORE_NEW_LINES
is used, so you still need to use rtrim() if you do not want the line ending present.
Note: 在读取在 Macintosh 电脑中或由其创建的文件时, 如果 PHP 不能正确的识别行结束符,启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。
更新日志 ¶
版本 | 说明 |
---|---|
5.0.0 | 增加了参数 context |
5.0.0 | Prior to PHP 5.0.0 the flags parameter only covered include_path and was enabled with 1 |
4.3.0 | file() 开始是二进制安全的 |
范例 ¶
Example #1 file() 例子
<?php
// 将一个文件读入数组。本例中通过 HTTP 从 URL 中取得 HTML 源文件。
$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode('', file('http://www.example.com/'));
// 从 PHP 5 开始可以使用可选标记参数
$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>
注释 ¶
使用 SSL 时,Microsoft IIS 会违反协议不发送close_notify标记就关闭连接。PHP 会在到达数据尾端时报告“SSL: Fatal Protocol Error”。 要解决此问题,error_reporting 应设定为降低级别至不包含警告。 PHP 4.3.7 及更高版本可以在使用 https:// 包装器打开流时检测出有问题的 IIS 服务器软件 并抑制警告。在使用 fsockopen() 创建 ssl:// 套接字时, 开发者需检测并抑制此警告。
参见 ¶
- readfile() - 输出文件
- fopen() - 打开文件或者 URL
- fsockopen() - 打开一个网络连接或者一个Unix套接字连接
- popen() - 打开进程文件指针
- file_get_contents() - 将整个文件读入一个字符串
- include - include
- stream_context_create() - 创建资源流上下文
User Contributed Notes 12 notes
strcmp
(PHP 4, PHP 5, PHP 7)
strcmp — 二进制安全字符串比较
参数 ¶
-
第一个字符串。
-
第二个字符串。
str1
str2
返回值 ¶
如果 str1
小于 str2
返回 < 0; 如果 str1
大于 str2
返回 > 0;如果两者相等,返回 0。
范例 ¶
Example #1 strcmp() 例子
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcmp($var1, $var2) !== 0) {
echo '$var1 is not equal to $var2 in a case sensitive string comparison';
}
?>
参见 ¶
- strcasecmp() - 二进制安全比较字符串(不区分大小写)
- preg_match() - 执行一个正则表达式匹配
- substr_compare() - 二进制安全比较字符串(从偏移位置比较指定长度)
- strncmp() - 二进制安全比较字符串开头的若干个字符
- strstr() - 查找字符串的首次出现
- substr() - 返回字符串的子串
krsort
(PHP 4, PHP 5, PHP 7)
krsort — 对数组按照键名逆向排序
说明 ¶
&$array
[, int $sort_flags
= SORT_REGULAR ] )
对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。
返回值 ¶
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
范例 ¶
Example #1 krsort() 例子
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
以上例程会输出:
d = lemon c = apple b = banana a = orange
参见 ¶
对数组进行排序 ¶
PHP 有一些用来排序数组的函数, 这个文档会把它们列出来。
主要区别有:
- 有些函数基于 array 的键来排序, 而其他的基于值来排序的:$array['key'] = 'value';。
- 排序之后键和值之间的关联关系是否能够保持, 是指排序之后数组的键可能 会被重置为数字型的(0,1,2 ...)。
- 排序的顺序有:字母表顺序, 由低到高(升序), 由高到低(降序),数字排序,自然排序,随机顺序或者用户自定义排序。
- 注意:下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
- 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的)。
函数名称 | 排序依据 | 数组索引键保持 | 排序的顺序 | 相关函数 |
---|---|---|---|---|
array_multisort() | 值 | 键值关联的保持,数字类型的不保持 | 第一个数组或者由选项指定 | array_walk() |
asort() | 值 | 是 | 由低到高 | arsort() |
arsort() | 值 | 是 | 由高到低 | asort() |
krsort() | 键 | 是 | 由高到低 | ksort() |
ksort() | 键 | 是 | 由低到高 | asort() |
natcasesort() | 值 | 是 | 自然排序,大小写不敏感 | natsort() |
natsort() | 值 | 是 | 自然排序 | natcasesort() |
rsort() | 值 | 否 | 由高到低 | sort() |
shuffle() | 值 | 否 | 随机 | array_rand() |
sort() | 值 | 否 | 由高到低 | rsort() |
uasort() | 值 | 是 | 由用户定义 | uksort() |
uksort() | 键 | 是 | 由用户定义 | uasort() |
usort() | 值 | 否 | 由用户定义 | uasort() |
User Contributed Notes 6 notes
array_filter
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_filter — 用回调函数过滤数组中的单元
说明 ¶
$array
[, callable $callback
[, int $flag
= 0 ]] )
依次将 array
数组中的每个值传递到 callback
函数。如果 callback
函数返回 TRUE
,则 input
数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
参数 ¶
-
要循环的数组
-
使用的回调函数
如果没有提供
callback
函数, 将删除input
中所有等值为FALSE
的条目。更多信息见转换为布尔值。转换为布尔值 ¶
要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。
参见类型转换的判别。
当转换为 boolean 时,以下值被认为是
FALSE
:- 布尔值
FALSE
本身 - 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 "0"
- 不包括任何元素的数组
- 不包括任何成员变量的对象(仅 PHP 4.0 适用)
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
所有其它值都被认为是
TRUE
(包括任何资源)。Warning-1 和其它非零值(不论正负)一样,被认为是
TRUE
!<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true) - 布尔值
-
决定
callback
接收的参数形式:ARRAY_FILTER_USE_KEY
-callback
接受键名作为的唯一参数ARRAY_FILTER_USE_BOTH
-callback
同时接受键名和键值
array
callback
flag
返回值 ¶
返回过滤后的数组。
范例 ¶
Example #1 array_filter() 例子
<?php
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>
以上例程会输出:
Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
Example #2 array_filter() 无 callback
<?php
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
以上例程会输出:
Array ( [0] => foo [2] => -1 )
注释 ¶
用户不应在回调函数中修改数组本身。例如增加/删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了,此函数的行为将不可预测。
参见 ¶
- array_map() - 将回调函数作用到给定数组的单元上
- array_reduce() - 用回调函数迭代地将数组简化为单一的值
- array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
User Contributed Notes 52 notes
isset
(PHP 4, PHP 5, PHP 7)
isset — 检测变量是否设置
说明 ¶
检测变量是否设置,并且不是 NULL
。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL
的变量,将返回 FALSE
。同时要注意的是一个 NULL
字节("\0")并不等同于 PHP 的 NULL
常数。
If multiple parameters are supplied then isset() will return TRUE
only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.
参数 ¶
-
要检查的变量。
-
其他变量。
var
...
返回值 ¶
如果 var
存在并且值不是 NULL
则返回 TRUE
,否则返回 FALSE
。
更新日志 ¶
版本 | 说明 |
---|---|
5.4.0 | 检查字符的非数字偏移量将会返回 |
范例 ¶
Example #1 isset() 例子
<?php
$var = '';
// 结果为 TRUE,所以后边的文本将被打印出来。
if (isset($var)) {
echo "This var is set so I will print.";
}
// 在后边的例子中,我们将使用 var_dump 输出 isset() 的返回值。
// the return value of isset().
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
这对于数组中的元素也同样有效:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// 键 'hello' 的值等于 NULL,所以被认为是未置值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump(array_key_exists('hello', $a)); // TRUE
// Checking deeper array values
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
empty
(PHP 4, PHP 5, PHP 7)
empty — 检查一个变量是否为空
说明 ¶
$var
)
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE
,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
参数 ¶
-
待检查的变量
Note:
在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。换言之,下列代码不会生效: empty(trim($name))。 作为替代,应该使用trim($name) == false.
没有警告会产生,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
var
返回值 ¶
当var
存在,并且是一个非空非零的值时返回 FALSE
否则返回 TRUE
.
以下的东西被认为是空的:
- "" (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- "0" (作为字符串的0)
NULL
FALSE
- array() (一个空数组)
- $var; (一个声明了,但是没有值的变量)
更新日志 ¶
版本 | 说明 |
---|---|
5.5.0 | empty() 现在支持表达式了,而不仅仅是变量。 |
5.4.0 | 检查非数字的字符串偏移量会返回 |
范例 ¶
Example #1 一个简单的 empty() 与 isset() 的比较。
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
Example #2 在字符串偏移量上使用empty()
PHP 5.4 修改了当传入的是字符串偏移量时, empty() 的行为
<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
以上例程在PHP 5.3中的输出:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
以上例程在PHP 5.4中的输出:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
注释 ¶
Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
Note:
当对一个不可见的对象属性使用 empty() 时, __isset() 方法如果存在的话,它将会被调用。
参见 ¶
- isset() - 检测变量是否设置
- __isset()
- unset() - 释放给定的变量
- array_key_exists() - 检查给定的键名或索引是否存在于数组中
- count() - 计算数组中的单元数目或对象中的属性个数
- strlen() - 获取字符串长度
- The type comparison tables
array_key_exists
(PHP 4 >= 4.0.7, PHP 5, PHP 7)
array_key_exists — 检查给定的键名或索引是否存在于数组中
说明 ¶
$key
, array $search
)
array_key_exists() 在给定的 key
存在于数组中时返回 TRUE
。key
可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。
参数 ¶
-
要检查的键。
-
一个数组,包含待检查的键。
key
search
返回值 ¶
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
范例 ¶
Example #1 array_key_exists() 例子
<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
?>
注释 ¶
Note:
为了向下兼容,可以使用下列已废弃的别名: key_exists()
func_get_arg
(PHP 4, PHP 5, PHP 7)
func_get_arg — 返回参数列表的某一项
说明 ¶
$arg_num
)
从用户自定义函数的参数列表中获取某个指定的参数。
该函数可以配合 func_get_args() 和 func_num_args() 一起使用,从而使得用户自定义函数可以接受自定义个数的参数列表。
参数 ¶
-
参数的偏移量。函数的参数是从0开始计数的。
arg_num
返回值 ¶
返回指定的参数,错误则返回 FALSE
。
更新日志 ¶
版本 | 说明 |
---|---|
5.3.0 | 该函数可以在参数列表中使用。 |
5.3.0 | If this function is called from the outermost scope of a file which has been included by calling includeor require from within a function in the calling file, it now generates a warning and returns FALSE . (不知道如何翻译跟好,直接参考例2即可明白) |
错误/异常 ¶
当在自定义函数的外面调用的该函数的时候会发出一个警告, 或者是当 arg_num
比实际传入的参数的数目大的时候也会发出一个警告。
范例 ¶
Example #1 func_get_arg() 例子
<?php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
}
foo (1, 2, 3);
?>
Example #2 func_get_arg() PHP 5.3 前后对比的例子
test.php
<?php
function foo() {
include './fga.inc';
}
foo('First arg', 'Second arg');
?>
fga.inc
<?php
$arg = func_get_arg(1);
var_export($arg);
?>
PHP 5.3 版本之前的输出:
'Second arg'
PHP 5.3 和之后的版本的输出:
Warning: func_get_arg(): Called from the global scope - no function context in /home/torben/Desktop/code/ml/fga.inc on line 3 false
Example #3 func_get_arg() example of byref and byval arguments
<?php
function byVal($arg) {
echo 'As passed : ', var_export(func_get_arg(0)), PHP_EOL;
$arg = 'baz';
echo 'After change : ', var_export(func_get_arg(0)), PHP_EOL;
}
function byRef(&$arg) {
echo 'As passed : ', var_export(func_get_arg(0)), PHP_EOL;
$arg = 'baz';
echo 'After change : ', var_export(func_get_arg(0)), PHP_EOL;
}
$arg = 'bar';
byVal($arg);
byRef($arg);
?>
以上例程会输出:
As passed : 'bar'
After change : 'bar'
As passed : 'bar'
After change : 'baz'
注释 ¶
Note:
因为函数依赖于当前作用域以确定参数的细节,所以在 5.3.0 以前的版本中不能用作函数的参数。如必须传递此值时,可将结果赋与一个变量,然后用此变量进行传递。
Note:
如果参数以引用方式传递,函数对该参数的任何改变将在函数返回后保留。
Note: This function returns a copy of the passed arguments only, and does not account for default (non-passed) arguments.
参见 ¶
- func_get_args() - 返回一个包含函数参数列表的数组
- func_num_args() - Returns the number of arguments passed to the function
heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串 例子:
$str = <<<SHOW
my name is Jiang Qihui!
SHOW;
file_exists
(PHP 4, PHP 5, PHP 7)
file_exists — 检查文件或目录是否存在
参数 ¶
-
文件或目录的路径。
在 Windows 中要用 //computername/share/filename 或者 \\computername\share\filename 来检查网络中的共享文件。
filename
返回值 ¶
如果由 filename
指定的文件或目录存在则返回 TRUE
,否则返回 FALSE
。
Note:
This function will return
FALSE
for symlinks pointing to non-existing files.
如果因为安全模式的限制而导致不能访问文件的话,该函数会返回 FALSE
。然而,可以使用 include 来包含,如果文件在 safe_mode_include_dir 所指定的目录里。
Note:
The check is done using the real UID/GID instead of the effective one.
Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果 。
范例 ¶
Example #1 测试一个文件是否存在
<?php
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
错误/异常 ¶
失败时抛出E_WARNING
警告。
注释 ¶
Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。
自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。
参见 ¶
- is_readable() - 判断给定文件名是否可读
- is_writable() - 判断给定的文件名是否可写
- is_file() - 判断给定文件名是否为一个正常的文件
- file() - 把整个文件读入一个数组中
2^100 = 2 * (2^3) ^ 33 = 2 * ( 7 + 1) ^ 33,因此2^100 mod 7 = 2 、、、、、、、、、、、、、、、、5^3 5的三次方
组 函数 ¶
参见
参考 is_array(), explode(), implode(), split(), preg_split(), and unset().
Table of Contents ¶
- array_change_key_case — 返回字符串键名全为小写或大写的数组
- array_chunk — 将一个数组分割成多个
- array_column — 返回数组中指定的一列
- array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
- array_count_values — 统计数组中所有的值出现的次数
- array_diff_assoc — 带索引检查计算数组的差集
- array_diff_key — 使用键名比较计算数组的差集
- array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
- array_diff_ukey — 用回调函数对键名比较计算数组的差集
- array_diff — 计算数组的差集
- array_fill_keys — 使用指定的键和值填充数组
- array_fill — 用给定的值填充数组
- array_filter — 用回调函数过滤数组中的单元
- array_flip — 交换数组中的键和值
- array_intersect_assoc — 带索引检查计算数组的交集
- array_intersect_key — 使用键名比较计算数组的交集
- array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引
- array_intersect_ukey — 用回调函数比较键名来计算数组的交集
- array_intersect — 计算数组的交集
- array_key_exists — 检查给定的键名或索引是否存在于数组中
- array_keys — 返回数组中部分的或所有的键名
- array_map — 将回调函数作用到给定数组的单元上
- array_merge_recursive — 递归地合并一个或多个数组
- array_merge — 合并一个或多个数组
- array_multisort — 对多个数组或多维数组进行排序
- array_pad — 用值将数组填补到指定长度
- array_pop — 将数组最后一个单元弹出(出栈)
- array_product — 计算数组中所有值的乘积
- array_push — 将一个或多个单元压入数组的末尾(入栈)
- array_rand — 从数组中随机取出一个或多个单元
- array_reduce — 用回调函数迭代地将数组简化为单一的值
- array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
- array_replace — 使用传递的数组替换第一个数组的元素
- array_reverse — 返回一个单元顺序相反的数组
- array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
- array_shift — 将数组开头的单元移出数组
- array_slice — 从数组中取出一段
- array_splice — 把数组中的一部分去掉并用其它值取代
- array_sum — 计算数组中所有值的和
- array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据
- array_udiff_uassoc — 带索引检查计算数组的差集,用回调函数比较数据和索引
- array_udiff — 用回调函数比较数据来计算数组的差集
- array_uintersect_assoc — 带索引检查计算数组的交集,用回调函数比较数据
- array_uintersect_uassoc — 带索引检查计算数组的交集,用回调函数比较数据和索引
- array_uintersect — 计算数组的交集,用回调函数比较数据
- array_unique — 移除数组中重复的值
- array_unshift — 在数组开头插入一个或多个单元
- array_values — 返回数组中所有的值
- array_walk_recursive — 对数组中的每个成员递归地应用用户函数
- array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
- array — 新建一个数组
- arsort — 对数组进行逆向排序并保持索引关系
- asort — 对数组进行排序并保持索引关系
- compact — 建立一个数组,包括变量名和它们的值
- count — 计算数组中的单元数目或对象中的属性个数
- current — 返回数组中的当前单元
- each — 返回数组中当前的键/值对并将数组指针向前移动一步
- end — 将数组的内部指针指向最后一个单元
- extract — 从数组中将变量导入到当前的符号表
- in_array — 检查数组中是否存在某个值
- key_exists — 别名 array_key_exists
- key — 从关联数组中取得键名
- krsort — 对数组按照键名逆向排序
- ksort — 对数组按照键名排序
- list — 把数组中的值赋给一些变量
- natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序
- natsort — 用“自然排序”算法对数组排序
- next — 将数组中的内部指针向前移动一位
- pos — current 的别名
- prev — 将数组的内部指针倒回一位
- range — 建立一个包含指定范围单元的数组
- reset — 将数组的内部指针指向第一个单元
- rsort — 对数组逆向排序
- shuffle — 将数组打乱
- sizeof — count 的别名
- sort — 对数组排序
- uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
- uksort — 使用用户自定义的比较函数对数组中的键名进行排序
- usort — 使用用户自定义的比较函数对数组中的值进行排序
User Contributed Notes 12 notes