Digamos que tengo esta matriz:PHP agregar un elemento de una matriz
$array = (1,2,4,5);
Ahora ¿Cómo puedo añadir que faltan 3 en orden de arriba en la posición correcta índice /clave -wise?
Digamos que tengo esta matriz:PHP agregar un elemento de una matriz
$array = (1,2,4,5);
Ahora ¿Cómo puedo añadir que faltan 3 en orden de arriba en la posición correcta índice /clave -wise?
Probar:
array_splice($array, 2 /*offset*/, 0 /*length*/, 3 /*value*/);
cuenta que esto también reordenar las claves de la matriz de entrada de 0 a n-1.
(Edit: El valor de retorno no se utiliza en este caso.)
array_merge(array_slice($array,0,2),array(3),array_slice($array,2))
function array_insert($array,$pos,$val)
{
$array2 = array_splice($array,$pos);
$array[] = $val;
$array = array_merge($array,$array2);
return $array;
}
uso:
array_insert($a,2,3);
En realidad, has reconstruido 'array_splice()' – Harmen
Esa es la razón por la que hay tantas funciones de matriz en PHP: escribir la tuya es normalmente más rápido que leer las sutilezas de la construcción en los que están en el manual :) –
wow, aprendemos algo nuevo todos los días. gracias por el puntero @Harmen :) +1 – tpae
Tal vez me falta la complejidad de su pregunta, pero el siguiente no te da lo que quieres?
$array[] = 3;
sort($array);
Por último, pero no menos importante:
function insertMissingIntoArray($values = array(), $valueIncrement = 1) {
$lastValue = 0;
foreach ($values as $key=>$val) {
if ($key != 0) {
if ($val != $lastValue + $valueIncrement) {
array_splice($values, $key, 0, $val);
}
$lastValue = $val;
}
}
return $values;
}
usados como este:
$values = array(1,2,4,5,7,9);
$fixedValues = insertMissingIntoArray($values, 1);
// $fixedValues now is (1,2,3,4,5,6,7,8,9)
Esto devuelve una matriz vacía – Harmen
Sí, ya he corregido mi respuesta. Devuelve los elementos que se extrajeron, que no es nada en este caso. Modifica la matriz de entrada original por referencia. – Matthew
konforence, -1 se convierte en +1;) – Harmen