本文目录一览:
- 1、php中array_walk和unset引用数组值诡异问题
- 2、PHP array_walk 函数的问题:数组的键和键值赋值给函数的顺序是怎样的?
- 3、PHP怎样在二维数组查找匹配字符串
- 4、php array_walk() 数组函数
php中array_walk和unset引用数组值诡异问题
这个比较特殊,因为你在删除第一个数组元素的时候,这个数组内容已经改变了,第二次传值值进入匿名函数的的时候这个数组的所有元素将被重新索引。
所以它的逻辑是:
第一次迭代,满足删除条件,不作输出。此时 $key = 0;
第二次迭代,不满足删除条件,输出$arr[$key]; 但这个时候 $key = 1,由于数组元素被重新索引,所以此时 $key = 1 的元素为 ccc (因为 aaa 已经被删掉了 ,bbb 是 0);-phpwalk
所以最终结果会少输出一个值,但最终数组肯定是正确的,只会少一个值,因为你只删了一个值
PHP array_walk 函数的问题:数组的键和键值赋值给函数的顺序是怎样的?
第一个参数是键值,第二个参数是键名。和后面的
echo "$fuck,$shitbr/";
完全无关
还有,写程序能不能不带脏话?
PHP怎样在二维数组查找匹配字符串
array_walk_recursive
方法一
array_walk_recursive($array,function($value,$key){
if($value==$string){
//相同
}
},$string);
方法二
foreach($array as $key=$value){
if(in_array($string,$value)){
//相同
}
}
php array_walk() 数组函数
复制代码
代码如下:
/*函数array_walk():单一数组回调函数---对数组中的每个成员应用用户函数
*
1、语法:bool
array_walk
(
array
array,
callback
funcname
[,
mixed
$userdata]
)
*
2、描述:如果成功则返回
TRUE,失败则返回
FALSE
*
3、注意事项:
*
3.1、$funcname是用户自己
定义的回调函数,接受2个参数,第一个参数为数组$array的值,第二个参数为
*
数组$array的键名,如果提供第三个参数$userdata,将作为第三个参数传递给回调函数$funcname
*
3.2、使用回调函数可以直接更改数组各个单元的值,但更改各个键名是无效的
*
3.3、该函数
不会受到
array
内部数组指针的影响。array_walk()
会遍历整个数组而不管指针
*
的位置
*
3.4、用户不应在回调函数中改变该数组本身,例如增加/删除单元,unset
单元等等,如果
array_walk()
*
作用的数组改变了,则此函数的的行为未经定义,且不可预期。
*/
$words=array("l"="lemon","o"="orange","b"="banana","a"="apple");
//定义一个回调函数,输出数组元素
function
words_print($value,$key,$prefix){
echo
"$prefix:$key=$valuebr\n";
}
//定义一个回调函数直接改变元素的值
function
words_alter($value,$key){
$value=ucfirst($value);
$key=strtoupper(key);
}
//输出元素的值
array_walk($words,'words_print','words');
//改变元素的值
array_walk($words,'words_alter');
echo
"pre";
print_r($words);
echo
"/pre";
运行效果如下: