This function does the same as:
<?php
$array = array_combine($keys,array_fill(0,count($keys),$value));
?>
array_fill_keys
(PHP 5 >= 5.2.0)
array_fill_keys — Preenche um array com valores, especificando chaves
Descrição
Preenche um array com o valor do parâmetro value , usando os valores do array keys como chaves.
Parâmetros
- keys
-
Array de valores que serão usados como chaves. Valores ilegais para chaves serão convertidos para string.
- value
-
Valor para usar no preenchimento
Valor Retornado
Retorna o array preenchido
Exemplos
Exemplo #1 Exemplo da array_fill_keys()
<?php
$keys = array('foo', 5, 10, 'bar');
$a = array_fill_keys($keys, 'banana');
print_r($a);
?>
O exemplo acima irá imprimir:
Array
(
[foo] => banana
[5] => banana
[10] => banana
[bar] => banana
)
Veja Também
- array_fill() - Preenche um array com valores
- array_combine() - Cria um array usando um array para chaves e outro para valores
array_fill_keys
matrebatre
20-Jun-2008 12:28
20-Jun-2008 12:28
phydeaux
14-May-2008 03:26
14-May-2008 03:26
Scratchy's version still doesn't work like the definition describes. Here's one that can take a mixed variable as the second parameter, defaulting to an empty string if it's not specified. Don't know if this is exactly how the function works in later versions but it's at least a lot closer.
function array_fill_keys($target, $value = '') {
if(is_array($target)) {
foreach($target as $key => $val) {
$filledArray[$val] = is_array($value) ? $value[$key] : $value;
}
}
return $filledArray;
}
This works for either strings or numerics, so if we have
$arr1 = array(0 => 'abc', 1 => 'def');
$arr2 = array(0 => 452, 1 => 128);
$arr3 = array(0 => 'foo', 1 => 'bar');
then
array_fill_keys($arr1,$arr2)
returns: [abc] => 452, [def] => 128
array_fill_keys($arr1,0)
returns: [abc] => 0, [def] => 0
array_fill_keys($arr2,$arr3)
returns: [452] => foo, [128] => bar
array_fill_keys($arr3,'BLAH')
returns: [foo] => BLAH, [bar] => BLAH
and array_fill_keys($arr1)
returns: [abc] =>, [def] =>
Scratchy
02-May-2008 07:18
02-May-2008 07:18
RE: bananasims at hotmail dot com
I also needed a work around to not having a new version of PHP and wanting my own keys. bananasims code doesn't like having an array as the second parameter...
Here's a slightly modified version than can handle 2 arrays as inputs:
//we want these values to be keys
$arr1 = (0 => "abc", 1 => "def");
/we want these values to be values
$arr2 = (0 => 452, 1 => 128);
function array_fill_keys($keyArray, $valueArray) {
if(is_array($keyArray)) {
foreach($keyArray as $key => $value) {
$filledArray[$value] = $valueArray[$key];
}
}
return $filledArray;
}
array_fill_keys($arr1, $arr2);
returns:
abc => 452, def =>128
bananasims at hotmail dot com
19-Dec-2006 11:03
19-Dec-2006 11:03
Some of the versions do not have this function.
I try to write it myself.
You may refer to my script below
function array_fill_keys($array, $values) {
if(is_array($array)) {
foreach($array as $key => $value) {
$arraydisplay[$array[$key]] = $values;
}
}
return $arraydisplay;
}
