草庐IT

VT_ARRAY

全部标签

php - 启用严格类型后,array_map 无论如何都会转换类型

我在PHP7.0.11中遇到了一个非常有趣的错误,其中启用declare(strict_types=1);不会使array_map()或array_walk()了解严格类型。我在某处读到,通过启用严格类型,PHP也在核心函数中使用了严格类型,但事实并非如此。看这个示例代码,它应该抛出TypeError异常:declare(strict_types=1);$myArray=[12,'stringvalue','anotherstringvalue',5];array_map('validateMyArrayValues',$myArray);functionvalidateMyArray

php - array_walk_recursive - 修改键和值

如何使用array_walk_recursive修改键和值??这里只有值被编码function_utf8_encode($arr){array_walk_recursive($arr,'utf8_enc');return$arr;}functionutf8_enc(&$value,&$key){$value=utf8_encode($value);$key=utf8_encode($key);} 最佳答案 array_walk_recursive只将用户函数应用于数组的值,而不是索引(我认为这与数组的索引必须是唯一的这一事实有关,所

PHP 按第二个数组排序 array_intersect_key() 结果

我在类中有一个看起来像这样的方法;classSomeClass{private$hidden=array(....);/***@returnarray-numericindexedarrayinorderof$this->hidden.*Suitableforusebylist(var1,var2,...)*/publicfunctiongetAsList($list=array()){returnarray_values(array_intersect_key($this->hidden,array_flip($list));}但这没有用,因为该方法的调用者不知道实例变量$hidde

mysqli - php5.3 - mysqli_stmt :bind_params with call_user_func_array warnings

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Isitpossibletopassparametersbyreferenceusingcall_user_func_array()?我有以下代码行在PHP5.1中有效,但在PHP5.3中无效。$input=array('ss','john','programmer');call_user_func_array(array($mysqli_stmt,'bind_param'),$input);在PHP5.3中,我收到以下警告消息:Warning:Parameter2tomysqli_stmt::bind_pa

php - array_unique() 没有排序

我正在构建一个扩展include_path的自动加载器。它需要一个数组,追加explode()包含路径,删除所有对当前目录的引用,在数组的开头添加一个当前目录,最后join()将整个内容组合在一起以形成一个新的包含路径.代码如下我还想在对数组进行内爆之前在数组上使用array_unique(),这样如果有人粗心并多次指定相同的路径,PHP就不会多次查找同一个位置。但是,我还需要维护数组的排序顺序,因为include按照它们在包含路径中定义的顺序在目录中查找。我想首先查看当前目录,然后是我的搜索目录列表,最后是原始包含路径,这样,例如,默认include_path中的公共(public)

php - array_merge & array_unique

PHP中是否有一个数组函数以某种方式执行array_merge,比较值,忽略键?我认为array_unique(array_merge($a,$b))有效,但我相信一定有更好的方法来做到这一点。例如。$a=array(0=>0,1=>1,2=>2);$b=array(0=>2,1=>3,2=>4);导致:$ab=array(0=>0,1=>1,2=>2,3=>3,4=>4);请注意,我不关心$ab中的键,但是如果它们是升序的,从0到count,会很好($ab)-1. 最佳答案 最优雅、最简单、最有效的解决方案是原始问题中提到的解决方

php - 如何让 array_walk 使用 PHP 内置函数?

我只想使用array_walk()和ceil()来舍入数组中的所有元素。但它不起作用。代码:$numbs=array(3,5.5,-10.5);array_walk($numbs,"ceil");print_r($numbs);输出应该是:3,6,-10错误信息:警告:ceil()只需要1个参数,第2行给出2个输出为:3,5.5,-10.5(与使用ceil()之前相同)我还尝试使用round()。 最佳答案 使用array_map相反。$numbs=array(3,5.5,-10.5);$numbs=array_map("ceil"

php - array_unshift 用于多维数组

我正在尝试将一个数组作为第一个元素插入到多维数组中。我的原始数组示例Array(0=>array("point1.0"=>"somedata","point2.0"=>"somedata")1=>array("point1.1"=>"somedata","point2.1"=>"somedata"))然后我有了要插入的数组作为第一个元素$newArray=array("point1.2"=>"somedata","point2.2"=>"somedata")我的结果应该是Array(0=>array("point1.2"=>"somedata","point2.2"=>"somedat

shuffle 和 array_rand 之间的 PHP 区别

PHP中的shuffle和array_rand函数到底有什么区别?如果没有差异,哪个更快。谢谢 最佳答案 在数组上调用时,shuffle随机化该数组所有元素的顺序。例如,以下部分代码:$arr=array(1,2,3,4,5);shuffle($arr);var_dump($arr);可以给出这个输出:array0=>int31=>int12=>int53=>int44=>int2整个数组本身都被修改了。在数组上调用时,array_rand返回该数组中随机选择的一个或多个键。例如,以下部分代码:$arr=array(1,2,3,4,

php - 如何防止 array_merge 重新编号数字键

我有一个数组,看起来像这样:Array([0]=>Array([unit_id]=>1[unit_name]=>ClownFish)[1]=>Array([unit_id]=>L[unit_name]=>Liter)[2]=>Array([unit_id]=>2[unit_name]=>Elephant)[3]=>Array([unit_id]=>3[unit_name]=>WaterBottle)[4]=>Array([unit_id]=>4[unit_name]=>OfficeSeating)[5]=>Array([unit_id]=>5[unit_name]=>GreenGree