文字

array_fill

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

array_fill用给定的值填充数组

说明

array array_fill ( int $start_index , int $num , mixed $value )

array_fill() value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。

参数

start_index

返回的数组的第一个索引值。

如果 start_index 是负数, 那么返回的数组的第一个索引将会是 start_index ,而后面索引则从0开始。 (参见 例子)。

num

插入元素的数量。 必须大于 0。

value

用来填充的值。

返回值

返回填充后的数组。

错误/异常

如果 num 少于一个,将会抛出 E_WARNING

范例

Example #1 array_fill() 例子

<?php
$a 
array_fill ( 5 6 'banana' );
$b  array_fill (- 2 4 'pear' );
print_r ( $a );
print_r ( $b );
?>

以上例程会输出:

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)

注释

参见手册上 数组 一节里关于负数的键的详细解释。

参见

  • array_fill_keys() - 使用指定的键和值填充数组
  • str_repeat() - 重复一个字符串
  • range() - 建立一个包含指定范围单元的数组

用户评论:

[#1] anatoliy at ukhvanovy dot name [2014-06-16 10:00:46]

If you need negative indices:
<?php
$b 
array_fill(-24'pear');//this is not what we want
$c array_fill_keys(range(-2,1),'pear');//these are negative indices
print_r($b);
print_r($c);
?>

Here is result of the code above:
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)
Array
(
    [-2] => pear
    [-1] => pear
    [0] => pear
    [1] => pear
)

[#2] mchljnk at NOSPAM dot gmail dot com [2013-11-10 03:07:07]

Using objects with array_fill may cause unexpected results. Consider the following:

<?php
class Foo {
   public 
$bar "banana";
}

//fill an array with objects
$array array_fill(02, new Foo());

var_dump($array);


//now we change the attribute of the object stored in index 0
//this actually changes the attribute for EACH object in the ENTIRE array
$array[0]->bar "apple";

var_dump($array);

?>


Objects are filled in the array BY REFERENCE. They are not copied for each element in the array.

[#3] miguelxpain at gmail dot com [2012-02-24 18:04:55]

I made this function named "array_getMax" that returns te maximum value and index, from array:

<?php
//using array_search_all by helenadeus at gmail dot com

function array_search_all($needle$haystack)
{
#array_search_match($needle, $haystack) returns all the keys of the values that match $needle in $haystack

    
foreach ($haystack as $k=>$v) {
   
        if(
$haystack[$k]==$needle){
       
           
$array[] = $k;
        }
    }
    return (
$array);

   
}

function 
array_getMax($array){
        
    
$conteo=array_count_values($array);
    
    if( 
count($conteo)==){//returns full array when all values are the same.
        
return  $array;       
    }
       
    
arsort($array);
    
    
//$antValue=null;
    
$maxValue=null;
    
$keyValue=null;
    foreach(
$array as $key=>$value){
        if(
$maxValue==null){
            
$maxValue=$value;
            
$keyValue=$key;
            break;
        }        
    }
    
    
$resultSearch=array_search_all($maxValue$array);
        
   return  
array_fill_keys($resultSearch$maxValue);
    
    
}

//example 
  
$arreglo=array('e1'=>99,'e2'=>'99','e3'=>1,'e4'=>1,'e5'=>98);
    
    
var_dump(array_getMax($arreglo));

//output

?>


I hope some one find this usefull

[#4] csst0266 at cs dot uoi dot gr [2004-08-11 10:32:39]

This is what I recently did to quickly create a two dimensional array (10x10), initialized to 0:

<?php
  $a 
array_fill(010array_fill(0100));
?>


This should work for as many dimensions as you want, each time passing to array_fill() (as the 3rd argument) another array_fill() function.

[#5] [2002-08-25 13:59:46]

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.

上一篇: 下一篇: