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
)
array_pad
(PHP 4, PHP 5)
array_pad — Dizi boyutunu belirtilen boyuta çıkarırken, yeni elemanlara belirtilen değeri yerleştirir
Açıklama
array_pad() işlevi yeni elemanlara dolgu değerini yerleştirerek yeni_boyut elemanlı bir dizi ile döner. Eğer yeni_boyut olarak pozitif bir değer belirtilmişse yeni elemanlar dizinin sonuna, negatif bir değer için ise dizinin başına eklenir. Eğer yeni_boyut 'un mutlak değeri dizinin mevcut boyutundan küçük veya ona eşitse dizide değişiklik olmaz. Bir seferde en fazla 1048576 eleman belirtilebilir.
Değiştirgeler
- girdi
-
Değer eklenecek dizi.
- yeni_boyut
-
Dizinin yeni boyutu.
- dolgu
-
girdi dizisinin eleman sayısı yeni_boyut 'tan kısa ise eklenecek elemanların değeri.
Dönen Değerler
girdi dizisinin yeni elemanlarına dolgu değeri yerleştirilerek elde edilen yeni_boyut elemanlı yeni bir dizi ile döner. Eğer yeni_boyut olarak pozitif bir değer belirtilmişse yeni elemanlar dizinin sonuna, negatif bir değer için ise dizinin başına eklenir. Eğer yeni_boyut 'un mutlak değeri dizinin mevcut boyutundan küçük veya ona eşitse dizide değişiklik olmaz.
Örnekler
Örnek 1 - array_pad() örneği
<?php
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
// sonuç: array(12, 10, 9, 0, 0)
$result = array_pad($input, -7, -1);
// sonuç: array(-1, -1, -1, -1, 12, 10, 9)
$result = array_pad($input, 2, "noop");
// dizide değişiklik olmaz
?>
Ayrıca Bakınız
- array_fill() - Bir diziyi değerlerle doldurur
- range() - Belli bir eleman aralığını içeren bir dizi oluşturur
array_pad
18-Dec-2008 05:23
08-Jan-2007 10:15
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 )
22-Oct-2004 06:48
Easy way to get an array contains 5 random numbers from 0 to 9:
$rand_arr = array_rand( array_pad( array(), 10, 1 ), 5 );
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);
?>
16-Jan-2004 04:02
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 )
24-Mar-2003 01:06
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,...
19-Sep-2002 04:39
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
23-Jul-2002 02:36
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...
19-Jul-2002 11:20
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.
10-Dec-2000 12:25
This is useful when using next() and prev() function in a while loop to traverse an array.
For example the following code will only output up to 8.
<?php
$test[] = "1";
$test[] = "2";
$test[] = "3";
$test[] = "4";
$test[] = "5";
$test[] = "6";
$test[] = "7";
$test[] = "8";
$test[] = "9";
$test[] = "10";
$test[] = " ";
$test[] = " ";
$test[] = " ";
$count = count($test);
while($i < $count) {
$now = current($test);
echo "<p>$now</p>";
next($test);
next($test);
next($test);
prev($test);
prev($test);
prev($test);
$i++;
next($test);
}
?>
But if you use:
$test = array_pad($test, 13, " ");
you will get all of your output.
