2010-08-17 10 views
10

¿Hay algún método (que no utiliza el bucle o recursividad) para crear y llenar una matriz con valores?Llenar matriz con valores sin bucle en PHP

Para ser precisos, quiero tener un efecto de

$t = array(); 
for($i = 0; $i < $n; $i++){ 
    $t[] = "val"; 
} 

pero más simple.

+0

Sé que esta pregunta es un poco viejo, pero ¿cómo para llenar la matriz con rango de int en lugar de cadena? – MJoraid

Respuesta

28

uso array_fill():

$t = array_fill(0, $n, 'val'); 
+2

Darn me ganó de mano; P Para cualquier interesado, sin embargo, resulta que array_fill es hasta 4 veces más rápido que el de la versión de bucle – Obto

1
$a = array(); 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value"; 
$a[] = "value";  

usted consigue la idea

+2

¿Cómo es eso más simple para él? Es lo mismo con más código y su mayor capacidad para realizar un seguimiento de la cantidad de elementos que está creando. EDIT: acabo de dar cuenta que de hecho se cumple su demanda ofno bucles pero realmente. – Iznogood

+2

Debido a que es la única manera de llenar una matriz sin un bucle. Cualquier otro método es usar un bucle detrás de la escena sin importar. – Stephen

+0

@Iznogood sí realmente, le pidió le contesté, no haga quemar el mensajero. :-) – Chris

2

Creo que se puede utilizar

$array = array_pad(array(), $n, "val"); 

para conseguir el efecto deseado.

Ver array_pad() en php.net

0

Depende de lo que quiere decir. Hay funciones para llenar arreglos, pero todos usarán bucles detrás de escena. Suponiendo que sólo está buscando para evitar bucles en su código , podría utilizar array_fill:

// Syntax: array_fill(start index, number of values; the value to fill in); 
$t = array_fill(0, $n, 'val'); 

es decir,

<?php 
    $t = array_fill(0, 10, 'val'); 
    print_r($t); 
?> 

dará:

Array (
    [0] => val 
    [1] => val 
    [2] => val 
    [3] => val 
    [4] => val 
    [5] => val 
    [6] => val 
    [7] => val 
    [8] => val 
    [9] => val 
) 
0
$a = array('key1'=>'some value', 'KEY_20'=>0,'anotherKey'=>0xC0DEBABE); 

/* necesitamos para anular gama entera con teclas segura Mantener */

$a = array_fill_keys(array_keys($a),NULL); 

var_export($a); 

/*result: 

array(
    'key1'=>NULL, 
    'KEY_20'=>NULL, 
    'anotherKey'=>NULL 
); 
*/ 
Cuestiones relacionadas