php - que - teclado matricial 4x4 arduino y lcd
¿Cómo aumentar en 1 todas las teclas de una matriz? (6)
Bueno, hay una manera muy simple de hacerlo:
$arr = array(''a'', ''b'', ''c'');
array_unshift($arr, null);
unset($arr[0]);
print_r($arr);
/*
Array
(
[1] => a
[2] => b
[3] => c
)
*/
Solo funcionará para matrices densas simples, por supuesto.
Y esto es muy poco trivial (sin embargo, es una línea única Y funciona para arreglos densos y dispersos):
$arr = array_flip(array_map(function($el){ return $el + 1; }, array_flip($arr)));
¿Cuál es la solución más simple para aumentar en 1 todas las teclas de una matriz?
ANTES DE:
$arr[0] = ''a'';
$arr[1] = ''b'';
$arr[2] = ''c'';
DESPUÉS:
$arr[1] = ''a'';
$arr[2] = ''b'';
$arr[3] = ''c'';
No estoy seguro de por qué querrías hacer esto, pero solo deberías poder seguir:
$new_array = array();
foreach($arr as $key => $value){
$new_array[$key+1] = $value;
}
$arr = $new_array;
No estoy seguro si esto califica como un trazador de líneas pero es una manera diferente de hacerlo
$result = array_reduce(array_keys($arr),function($carry,$key) use($arr){
$carry[$key+1] = $arr[$key];
return $carry;
},[]);
Puedes usar
$start_zero = array_values($array); /* Re-Indexing Array To Start From Zero */
Y si quieres comenzar desde el índice 1 usa
$start_one = array_combine(range(1, count($array)), array_values($array));
Sé que esta pregunta es bastante antigua, pero me encontré con un problema similar recientemente y se me ocurrió una buena línea para resolverlo para cualquier tipo de matriz que utilizara un entero arbitrario como la clave de inicio:
$array = array_combine(array_keys(array_fill($starting_index, count($array), 0)), array_values($array));
$ beginning_index es el valor que desee para la clave de número entero inicial, p. ej. 3.
Esto incluso se puede usar con matrices que contienen objetos complejos, a diferencia de la solución que usa matriz_filada y no le limita a iniciar el índice en 0 o 1 como algunas de las otras soluciones.
$count = count($arr);
for($i=$count; $i>0; $i--){
$arr[$i] = $arr[$i-1];
}
unset($arr[0]);