array_fill 用给定的值填充数组
转自:http://www.phpstudy.net/php/165.html
PHP array_fill 用给定的值填充数组
array_fill
(PHP 4 >= 4.2.0, PHP 5)
array_fill — 用给定的值填充数组
说明
array array_fill ( int $start_index , int $num , mixed $value )
array_fill() 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。注意 num 必须是一个大于零的数值,否则 PHP 会发出一条警告。
Example #1 array_fill() 例子
<?php
$a = array_fill(5, 6, 'banana');
print_r($a);
?>
$a 现在是:
- Array
- (
- [5] => banana
- [6] => banana
- [7] => banana
- [8] => banana
- [9] => banana
- [10] => banana
- )
参见 str_repeat() 和 range()。
PHP array_fill note #1
To better handle the problem of sparse array completion mentioned a couple years ago...
What you really need in this scenario is an empty array containing all the desired keys, and a sparse array containing the keys and values you want overridden. This PHP5 function does that. (The PEAR package PHP_Compat should be able to fill in the gap -- array_combine() -- for a 4.3 install, if necessary.)
<?php
function array_complete(
$keys="", // array of keys you need filled, in order
$sparse="" // sparse array to override blanks
)
{
if(!is_array($sparse))
$sparse=array();
if(!is_array($keys))
return $sparse;
return array_merge(
array_combine( // create an associative array
$keys, // your list of keys
array_fill( // blank value for each key
0,count(
$keys
),""
)
),$sparse // merge with your incomplete array
);
}
?>
This merges in your sparse array (inserting any additional keys in that array after the ones you've specified), placing its values in the key order you specify, leaving all the other values blank.
Test call: var_dump(array_complete(array("test1", "test2", "test3", "test4", "test5"), array("test3" => "test3", "test1" => "test1", "garbage" => "garbage")));
Result: array(6) {
["test1"]=>
string(5) "test1"
["test2"]=>
string(0) ""
["test3"]=>
string(5) "test3"
["test4"]=>
string(0) ""
["test5"]=>
string(0) ""
["garbage"]=>
string(7) "garbage"
}
PHP array_fill note #2
This is what I recently did to quickly create a two dimensional array (10x10), initialized to 0:
<?php
$a = array_fill(0, 10, array_fill(0, 10, 0));
?>
This should work for as many dimensions as you want, each time passing to array_fill() (as the 3rd argument) another array_fill() function.
PHP array_fill note #3
For PHP < 4.2.0 users:
Add this to your script:
if (!function_exists('array_fill')) {
require_once('array_fill.func.php');
}
and the array_fill.func.php file:
<?php
// For PHP version < 4.2.0 missing the array_fill function,
// I provide here an alternative. -Philippe
function array_fill($iStart, $iLen, $vValue) {
$aResult = array();
for ($iCount = $iStart; $iCount < $iLen + $iStart; $iCount++) {
$aResult[$iCount] = $vValue;
}
return $aResult;
}
?>
PHP array_fill note #4
array_fill() cannot be used to setup only missing keys in an array. This may be necessary for example before using implode() on a sparse filled array.
The solution is to use this function:
<?php
function array_setkeys(&$array, $fill = NULL) {
$indexmax = -1;
for (end($array); $key = key($array); prev($array)) {
if ($key > $indexmax)
$indexmax = $key;
}
for ($i = 0; $i <= $indexmax; $i++) {
if (!isset($array[$i]))
$array[$i] = $fill;
}
ksort($array);
}
?>
This is usefull in some situations where you don't know which key index was filled and you want to preserve the association between a positioned field in an imploded array and the key index when exploding it.
array_fill 用给定的值填充数组的更多相关文章
- 任务型对话(一)—— NLU(意识识别和槽值填充)
1,概述 任务型对话系统越来越多的被应用到实际的场景中,例如siri,阿里小密这类的产品.通常任务型对话系统都是基于pipline的方式实现的,具体的流程图如下: 整个pipline由五个模块组成:语 ...
- jsoncpp封装和解析字符串、数字、布尔值和数组
使用jsoncpp进行字符串.数字.布尔值和数组的封装与解析. 1)下载jsoncpp的代码库 百度网盘地址 :http://pan.baidu.com/s/1ntqQhIT 2)解压缩文件 json ...
- Array.splice返回值是数组
import flash.display.MovieClip; import flash.display.DisplayObject; var m:MovieClip = new MovieClip( ...
- PHP按值合并数组
/** * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreac ...
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...
- 把一个给定的值存储到一个整数中指定的几个位《C与指针5.8.5》
编写一个函数,把一个给定的值存储到一个整数中指定的几个位.它的原型如下: int store_bit_field(int original_value, int value_to_store, uns ...
- 根据Bool值挑选数组中元素
根据Bool值挑选数组中元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用Boolean类型的数组挑选一维数组中的值 使用一维Boolean数组选取数组中的特定元素,对应位置为True ...
- params.row[params.column.key] vue h函数 当前单元格 h函数 div 属性 值或数组 render
params.row[params.column.key] vue h函数 当前单元格 h函数 div 属性 值或数组 render
- js javascript 如何获取某个值在数组中的下标
js 某个值在数组中的下标javascript中知道一个数组中的一个元素的值,如何获取数组下标JS 获取数组某个元素下标 函数方法 采用prototype原型实现方式,查找元素在数组中的索引值js查找 ...
随机推荐
- epoll
https://segmentfault.com/a/1190000003063859http://man7.org/linux/man-pages/man7/epoll.7.html EPOLLIN ...
- 使用reids结合wcf实现集群模式下的聊天室功能
1.reids的特点 Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型(字符串,哈希,列表,集合,有序集合),. Redis可以将数据复 ...
- VS联调多个解决方案的项目
一.项目中经常出现一个解决方案里面有多个程序,如果想按F5启动多个实例进行操作调试那该怎么操作? 以前自己都使用附加进程的方法调试,这样的调试不需要按F5,自己只要运行多个程序后,使用vs的附加进程到 ...
- js实现A*寻路算法
这两天在做百度前端技术学院的题目,其中有涉及到寻路相关的,于是就找来相关博客进行阅读. 看了Create Chen写的理解A*寻路算法具体过程之后,我很快就理解A*算法的原理.不得不说作者写的很好,通 ...
- log4j属性详解
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻 ...
- easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题
做一个用easyui的datagrid显示数据的功能时发现表格的列头与数据错位了,而且这个现象不总是能重现,一直没搞清楚原因.后来偶然在控制台看出了一点端倪: 推测表头或者单元格的class名应该是用 ...
- 基本概率分布Basic Concept of Probability Distributions 3: Geometric Distribution
PDF version PMF Suppose that independent trials, each having a probability $p$, $0 < p < 1$, o ...
- C++ 参考网站
Reference Web cites for the C++ standard library cppreference cplusplus sgi IBM MSDN isocpp More res ...
- Linux 下的常用工具
Useful Linux Utilities (This article is under constant construction) ssh 相关文章 How To Change OpenSSH ...
- Oracle 数据类型
类型 含义 CHAR(length) 存储固定长度的字符串.参数length指定了长度,如果存储的字符串长度小于length,用空格填充.默认长度是1,最长不超过2000字节. VARCHAR2(le ...