entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

¿Como puedo unir elementos de varios arrays asociativos en PHP?

Hola, llevo varias horas buscando esta respuesta a mi pregunta,
actualmente tengo 3 arrays asociativos:

$arrDataLineas = ('linea_id' => 1,'lineas_id' => 5,'linea_id' => 6);
$arrDataMarcas = ('marcas_id' => 1,'marcas_id' => 5);
$arrDataModelos = ('modelos_id' => 2,'modelos_id' => 3,'modelos_id' => 4);

Como puedo combinarlos para que ejecute un foreach y me mande esta sentencia:

En la primera vuelta

$nuevoArr = ('linea_id' => 1,'marcas_id' => 1,'modelos_id' => 2);

En la segunda vuelta

$nuevoArr = ('lineas_id' => 5,'marcas_id' => 5,'modelos_id' => 3);

En la tercera vuelta

$nuevoArr = ('linea_id' => 6,'modelos_id' => 4);

todo esto para insertarlos a mi tabla:

$sql->InsertQuery('tbl_promociones_detalle', $nuevoArr); 

Lo he intentado con un Foreach anidado pero me inserta duplicados,
También he intentado usar el array_merge() como muestra este blog

NOTAS: Utilizo las librerias Boris Erdmann, Kristian Koehntopp
para insertar a la base de datos, trabajo en posgresql php.

Gracias*

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @klop233,

para hacer lo que te hace falta, dado que los elementos están ordenados, podrías quedarte solo con los valores y rearmar cada vector para que quede en el formato que requiere InsertQuery().

Sería algo como:

// Pasa los array asociativos a indizados
$alineas = array_values($arrDataLineas);
$amarcas = array_values($arrDataMarcas);
$amodelos = array_values($arrDataModelos);
// recorre uno, pero las claves ahora coinciden
foreach ($alineas as $k => $v){
  $tmp = array();
  $tmp['linea_id'] = $v;
  $tmp['marcas_id'] = $amarcas[$k];
  $tmp['modelos_id'] = $amodelos[$k];
  // formato deseado
  var_dump($tmp);
}

Este código fallará en la 3ra vuelta, porque hay una marca menos de la necesaria; bastaría con chequear en el FOREACH que el elemento del vector exista antes de usarlo, pero no lo pongo porque le va a sacar legibilidad a la solución y será más difícil de entender.

(puede faltar una Marca en tu modelo de datos?... no es que esté mal, pero es raro.)

Saludos cordiales!

1voto

JPablo23 comentado

WUAOO!! Parece Magia!
Gracias nuevo Amigo!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta