PHP - agregar elementos a un array en una posicion especifica con array_merge y array_slice

   
Vista:

agregar elementos a un array en una posicion especifica con array_merge y array_slice

Publicado por Alexi (29 intervenciones) el 04/10/2015 02:13:29
EStimados gracias por leer mi pregunta.

Mi consulta es como puedo hacer para agregarle elementos en una posición especifica dinamicamente a un array.

Actualmente he conseguido ingresar elementos por medio de un for pero estoy teniendo problemas cuando el for ingresa por segunada vez me sobreescribe la infomación de esta dos nuevas columnas que estoy creando dinamicamente al array con nombre $evtComprometidos aunque intento sumarle +1 al array_slice para ver si me escribe en la siguinte posición pero aun asi no lo hace.

Necesito de su acostumbra ayuda indicandome como puedo hacer para agregar dinamicamente key=>value a un array o si conocen un mejor metodo de hacerlo le agradezco antemano..adjunto codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$idCajeros = explode("-",$data['IDENTCAJERO']);
$fechUltimoR = explode("|",$data['REGISTROS_ANT']);
 
 $evtComprometidos = array(
           'Código:' =>$data['COD_ID'],
            'Número de Cajeros:' =>$data['CAJEROS'],
            'Institución:' =>$data['INSTITUCION'],
            'Ubicación:' =>$data['UBICACION'],
            'Institución Cajero:' =>$data['DESACCIONES'],
            'Ciudad:' =>$data['CIUDAD'],
            //aqui intento agregar los nuevos elementos que estoy creando en el for que se encuentra mas abajo
            'Fecha de Registro1:' =>$data['FECHAREGISTRO1'],
            'Fecha de Registro:' =>$data['FECHAREGISTRO']
);
 
for($r = 0; $r < count($fechUltimoR);$r++){
                $var = $r+1;
//entiendo que aqui me sobrescibe los datos pero no se como evitarlo 
$b = array_merge(array_slice($evtComprometidos, 0+$var, 6+$var),//intento +1 para que escriba en la siguinte posicion pero no lo realiza
                     array("Cajero {$var}" =>$idCajeros[0]."-".$idCajeros[$var],
                            "F. Último Registro {$var}" =>$fechUltimoR[$r]
                           ),
                     array_slice($evtComprometidos,2));
}
return $b;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Víctor Rodríguez Martín

agregar elementos a un array en una posicion especifica con array_merge y array_slice

Publicado por Víctor Rodríguez Martín (171 intervenciones) el 04/10/2015 08:46:03
No sé si te entendido bien, pero creo que lo que quieres es:

Tienes un array $a asociativo que tiene inicialmente 8 elementos y quieres una función que te agrege dos elementos:
1
2
$a["Cajero x"] = "un valor"
$a["F. ultimo registro x"] = "otro valor"

Donde x es el número de orde de ingreso.
De forma que queden entre el 6º y 7º la primera vez que se agrega (aquí x=1), entre el 8º y 9º la segunda (x=2), entre el 10º y el 11º la tercera (x=3), etc...

si es así puede que te ayude este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
/**
 * función inserta
 */
function inserta($a,$valor1,$valor2) {
    $var = ( count($a) - 2 - 6 ) / 2 + 1;// +1 para que empiece en 1
    $salida = array_merge(
                        array_slice($a,0,count($a)-2),
                        array("Cajero $var" => $valor1,"F. ultimo registro $var" => $valor2),
                        array_slice($a,-2,2)
                    );
    return $salida;
}
 
 
 $a = array(
           'Codigo:' =>"COD_ID",
            'Numero de Cajeros:' =>"CAJEROS",
            'Institucion:' =>'INSTITUCION',
            'Ubicacion:' =>'UBICACION',
            'Institucion Cajero:' =>'DESACCIONES',
            'Ciudad:' =>'CIUDAD',
            //aqui intento agregar los nuevos elementos que estoy creando en el for que se encuentra mas abajo
            'Fecha de Registro1:' =>'FECHAREGISTRO1',
            'Fecha de Registro:' =>'FECHAREGISTRO'
);
 
 
foreach($a as $clave => $valor) {
    echo "<br> a[$clave] = $valor";
}
echo "<br>";
 
// PRIMERA INSERCIÓN
$a = inserta($a,"cajero la primera vez","F. ultimo registro la primera vez");
 
foreach($a as $clave => $valor) {
    echo "<br> a[$clave] = $valor";
}
echo "<br>";
 
 
//SEGUNDA INSERCIÓN
$a = inserta($a,"cajero la segunda vez","F. ultimo registro la segunda vez");
 
foreach($a as $clave => $valor) {
    echo "<br> a[$clave] = $valor";
}
echo "<br>";
?>

Lo que sale en pantalla es:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
a[Codigo:] = CODIGO
a[Numero de Cajeros:] = CAJEROS
a[Institucion:] = INSTITUCION
a[Ubicacion:] = UBICACION
a[Institucion Cajero:] = DESACCIONES
a[Ciudad:] = CIUDAD
a[Fecha de Registro1:] = FECHAREGISTRO1
a[Fecha de Registro:] = FECHAREGISTRO
 
a[Codigo:] = CODIGO
a[Numero de Cajeros:] = CAJEROS
a[Institucion:] = INSTITUCION
a[Ubicacion:] = UBICACION
a[Institucion Cajero:] = DESACCIONES
a[Ciudad:] = CIUDAD
a[Cajero 1] = cajero la primera vez
a[F. ultimo registro 1] = F. ultimo registro la primera vez
a[Fecha de Registro1:] = FECHAREGISTRO1
a[Fecha de Registro:] = FECHAREGISTRO
 
a[Codigo:] = CODIGO
a[Numero de Cajeros:] = CAJEROS
a[Institucion:] = INSTITUCION
a[Ubicacion:] = UBICACION
a[Institucion Cajero:] = DESACCIONES
a[Ciudad:] = CIUDAD
a[Cajero 1] = cajero la primera vez
a[F. ultimo registro 1] = F. ultimo registro la primera vez
a[Cajero 2] = cajero la segunda vez
a[F. ultimo registro 2] = F. ultimo registro la segunda vez
a[Fecha de Registro1:] = FECHAREGISTRO1
a[Fecha de Registro:] = FECHAREGISTRO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

agregar elementos a un array en una posicion especifica con array_merge y array_slice

Publicado por Alexi (29 intervenciones) el 04/10/2015 20:34:08
Que tal Victor gracias por tu respuesta se ajusto a lo que estaba buscando insertar elementos en la posición indicada

solo tengo una consulta como puedo hacer si el array $a tiene 15 elementos como y el elemento que voy a insertar o agregar al array $a empiece en uno ya que 1 tal como esta en la operación que me facilitastes

1
$var = ( count($a) - 2 - 6 ) / 2 + 1;// +1 para que empiece en 1
actualmente estoy cambiando el primer 2 por 8 para que empiece en 1 si el array $a tiene 15 elementos
pero estoy teniendo como resultado Cajero 0.7142857142857143.

Gracias por tu gentil ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Víctor

agregar elementos a un array en una posicion especifica con array_merge y array_slice

Publicado por Víctor vrm@mac.com (171 intervenciones) el 05/10/2015 08:35:49
Te explico la linea: count($a) es el número de elementos que tiene actualmente el array $a, el primer 2 es porque quieres dejar dos elementos por detrás de lo que insertas, el 6 es porque el array $a tiene inicialmente 6 elementos que quedan por delante, se divide por 2 porque se insertan 2 elementos y se suma 1 para que empiece por el 1 al numerar los que se insertan.

Si tienes 15 elementos inicialmente y quieres insertar 3 elementos dejando 5 por detrás y 10 por delante en la primera inserción, 13 en la segunda, 16 en la tercera, etc y quieres que la numeración empiece en el 7 (ya se que esto parece raro pero es para el ejemplo):
$var = ( count($a) - 5 - 10) / 3 + 7;
También se puede entender de la forma siguiente count($a) es el número de elementos que tiene actualmente el array $a restando el número de elementos que tenía inicialmente tenemos los que se han insertado. esta cantidad de divide por el número de elementos que se insertan de cada vez, lo que nos da en número de inserciones. Finalmente le sumamos el número inicial.

Bueno, no sé si te he ayudado.

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

agregar elementos a un array en una posicion especifica con array_merge y array_slice

Publicado por Alexi (29 intervenciones) el 05/10/2015 14:11:32
Que tal Víctor.
Con tu explicación ya me quedo claro

Gracias por tu colaboración me sirvio ]mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar