• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • array_pad()

    (PHP 4, PHP 5, PHP 7)

    以指定长度将一个值填充进数组

    说明

    array_pad(array $array,int $size,mixed $value): array

    array_pad()返回$array的一个拷贝,并用$value将其填补到$size指定的长度。如果$size为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果$size的绝对值小于或等于$array数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。

    参数

    $array

    需要被填充的原始数组。

    $size

    新数组的长度。

    $value

    将被填充的值,只有在$array的现有长度小于$size的长度时才有效。

    返回值

    返回$array$value填充到$size指定的长度之后的一个副本。如果$size为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果$size的绝对值小于或等于$array数组的长度则没有任何填补。

    范例

    Example #1array_pad()例子

    <?php
    $input = array(12, 10, 9);
    $result = array_pad($input, 5, 0);
    // result is array(12, 10, 9, 0, 0)
    $result = array_pad($input, -7, -1);
    // result is array(-1, -1, -1, -1, 12, 10, 9)
    $result = array_pad($input, 2, "noop");
    // not padded
    ?>
    

    参见

    • array_fill() 用给定的值填充数组
    • range() 根据范围创建数组,包含指定的元素
    Beware, if you try to pad an associative array using numeric keys, your keys will be re-numbered.
    <?php
    $a = array('size'=>'large', 'number'=>20, 'color'=>'red');
    print_r($a);
    print_r(array_pad($a, 5, 'foo'));
    // use timestamps as keys
    $b = array(1229600459=>'large', 1229604787=>20, 1229609459=>'red');
    print_r($b);
    print_r(array_pad($b, 5, 'foo'));
    ?>
    yields this:
    ------------------
    Array
    (
      [size] => large
      [number] => 20
      [color] => red
    )
    Array
    (
      [size] => large
      [number] => 20
      [color] => red
      [0] => foo
      [1] => foo
    )
    Array
    (
      [1229600459] => large
      [1229604787] => 20
      [1229609459] => red
    )
    Array
    (
      [0] => large
      [1] => 20
      [2] => red
      [3] => foo
      [4] => foo
    )
    little older, a little wiser.
    ksort() will order the array back into its normal order again
    so:
    <?php
    $myArr = array(2 => 'two', 4 => 'four');
    $newArr = array_pad(array(), 6, 'FILLED');
    $newArr =$myArr+$newArr;
    ksort($newArr);
    ?>
    Will give : 
    Array ( [0] => FILLED [1] => FILLED [2] => two [3] => FILLED [4] => four [5] => FILLED )
    To daarius - you mean you have...
    [2]=>"two"
    [3]=>"three"
    and you want...
    [0]=>"FILLED"
    [1]=>"FILLED"
    [2]=>"two"
    [3]=>"three"
    [4]=>"FILLED"
    [5]=>"FILLED"
    If so, then the following code...
    <?php
    $array = array(2 => "two", 3 => "three");
    $array = array_pad($array, count($array)+2, "FILLED");
    $num = -(count($array)+2);
    $array = array_pad($array, $num, "FILLED");
    print_r($array);
    ?>
    will return:
    Array ( [0] => FILLED [1] => FILLED [2] => two [3] => three [4] => FILLED [5] => FILLED )
    The ordering should be okay,...
    to the previous commenter -- if you read the manual entry, you'd see that a negative pad_size will put the pad values at the front of the array.
    One way to initialize a 20x20 multidimensional array. 
    <?php
    $a = array();
    $b = array();
    $b = array_pad($b,20,0);
    $a = array_pad($a,20,$b);
    ?>
    
    yes that is true. But, if the index of the array is 2=two, 3=three
    and i want 4 more keys to be filled. But, not just filled anywhere, but i want to maintain the key index.
    so, i would like to have 0=FILLED, 1=FILLED ... 4=FILLED, 5=FILLED
    now i got 4 more keys padded with my string.
    We can do this "if" we know the missing keys, but if we dont, then it would be nice for array_pad() or perhaps some new function to do this?
    obviously we can achive this by looping through the array using array_key_exists(), and if you dont find the key, simply create + fill it.
    regards,
    Daarius...
    OR you could do this 
    <?php
    $myArr = array(2 => 'three', 3 => 'four');
    $newArr = array_pad(array(), 4, 'FILLED');
    $newArr =$myArr+$newArr;
    ?>
    This gives your desired result BUT the ordering is a little wierd, because of the order they were added. Indexes are okay though and that is what you wanted.
    print_r($newArr) outputs
    Array ( [2] => three [3] => four [0] => FILLED [1] => FILLED )
    hope this helps
    Easy way to get an array contains 5 random numbers from 0 to 9:
    $rand_arr = array_rand( array_pad( array(), 10, 1 ), 5 );
    // insert element to array
    function array_insert(&$arr, $pos, $new_el=null) {
      $arraypad = array_pad($arr, count($arr)+1, 0);
      for ($i=count($arr)-1; $i>=$pos; $i--) {
        $arr[$i+1] = $arr[$i];
        if ($i == $pos) {
          $arr[$i] = $new_el;
        }
      }
    }
    $digits = array();
    $digits[0] = 0;
    $digits[1] = 1;
    $digits[2] = 2;
    $digits[3] = 3;
    $digits[4] = 4;
    $digits[5] = 5;
    echo "was: "; var_dump($digits);
    array_insert($digits, 3, 100);
    echo "new: "; var_dump($digits);
    A simple example for array_pad()
    the syntax is as follows: array_pad(array(), (+/-)int, value)
    where "array" is the array to which the value is to be added,
    "(+/-) int" is a value that decides the length of the array(it should be greater than the length of the array.
    if its a negative number then the value will be added at the left of the array else it will be added to the right.
    "values" denotes the value to be added to the array
    lets try an example:
    <?php
    $digits = array();
    $digits[0] = 1;
    $digits[1] = 2;
    $digits[2] = 3;
    $arraypad = array_pad($digits, -4, "0");
    print_r($arraypad);
    ?>
    output:
    Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
    Just an info about the value of "$pad_size" , 
    If we set the value of "$pad_size" from -3 to 3,
    It will produce the output like:
    <?php
    $result = array_pad($input, -3, "noop");
    //result is array(12, 10, 9)
    $result = array_pad($input, 3, "noop");
    //result is array(12, 10, 9)
    ?>
    means array will remain the same.

    上篇:array_multisort()

    下篇:array_pop()