Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Diferencia entre sumar(+) y concatenar(.) arrays

Estas en el tema de Diferencia entre sumar(+) y concatenar(.) arrays en el foro de PHP en Foros del Web. Lo que pasa es que estoy creando una varible que sera un array de esta manera: Código PHP: $arrayreteica =array();  y luego hago un if ...
  #1 (permalink)  
Antiguo 20/04/2014, 10:59
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 16 años, 2 meses
Puntos: 7
Diferencia entre sumar(+) y concatenar(.) arrays

Lo que pasa es que estoy creando una varible que sera un array de esta manera:

Código PHP:
$arrayreteica=array(); 
y luego hago un if con unos resultados, que voy a guardar en dicho array de esta manera:

Código PHP:
if(isset($this->_request["porcentajereteicaxitem-$i"])) // guarda el reteica y el porcentaje
                                    
{
                                        
$reteicaxitem=$this->_request["porcentajereteicaxitem-$i"];
                                        
$porcenreteica=$this->_request["hdnporcrica-$i"];
                                        
                                        
$arrayreteica+=array("$i"=>array($porcenretfuente,$retefuentexitem));
                                        
                                    } 
Mi pregunta es esta, al yo concatenarlo con += y hago un var_dump de esa variable me muestra normal, un array con sus contenidos, pero si hago con .= me muestra arrayarrayarray.

¿Cúal es la diferencia y por qué ocurre esto?
  #2 (permalink)  
Antiguo 20/04/2014, 15:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Diferencia entre sumar(+) y concatenar(.) arrays

De entrada, no debes hacer operaciones directamente con arrays, sino con sus elementos y de acuerdo al tipo de dato; ejemplo:

Código PHP:
Ver original
  1. $var = array(
  2.        'sumar' => 0,
  3.        'concatenar' => 'Algo',
  4.        'combinar' => array(1, 2, 3)
  5. );
  6.  
  7. // Sumar
  8. $var['sumar'] += 450;
  9.  
  10. // Concatenar
  11. $var['concatenar'] .= ' - cadena agregada';
  12.  
  13. // Combinar arrays
  14. $var['combinar'] = array_merge($var['combinar'], array(5, 8, 9), array(30, 50, 100));
  15.  
  16. // Agregar elementos con índice numérico automático
  17. $var[] = 'Otro valor';
  18.  
  19. // Agregar elementos con índice asociativo
  20. $var['otro indice'] = 'Valor';
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 20/04/2014, 15:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Diferencia entre sumar(+) y concatenar(.) arrays

Lo que quieres hacer creo es lo que te dice @Triby de "combinar arrays" con array_merge()

Podrias preguntar por que no usar polimorfismo de operadores ('+' por ejemplo) pero es que hay demasiadas operaciones posibles con arreglos...... y seria aun mas confuso:

$total = $arr1 + $arr2

- Seria la suma valor a valor tomando como con NULL los valores de la cadena mas corta ?
- Seria poner un array atras de otro ? (merge)

Por eso no se hace asi en PHP creo..... aunque en PYTHON:

Código Python:
Ver original
  1. a1 = 2,3,4
  2. a2 = 5,6
  3.  
  4. print (a1+a2)

Imprime:

Cita:
(2, 3, 4, 5, 6)
:)))
__________________
Salu2!
  #4 (permalink)  
Antiguo 22/04/2014, 16:24
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Diferencia entre sumar(+) y concatenar(.) arrays

Gracias a ustedes dos por su colaboración, ¡tema entendido!.
  #5 (permalink)  
Antiguo 28/04/2014, 09:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Diferencia entre sumar(+) y concatenar(.) arrays

UPDATE:

Con PHP 5.6 podria ser posible que definas tu mismo la operacion suma de arrays....como mas te guste:

https://wiki.php.net/rfc/operator_overloading_gmp
__________________
Salu2!

Etiquetas: arrays, concatenar, diferencia, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:59.