Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
El bucle php sobre una matriz multidimensional puede combinar la misma clave/valor en un nuevo elemento de matriz

Estoy obteniendo algunos datos de mysql en una matriz como esta

 array( [0] = array( 'code' => '123456', 'title' => 'something', 'price' => '2.00', 'other_value' => '555555' ), [1] = array( 'code' => '123456', 'title' => 'something', 'price' => '2.00', 'other_value' => '666666' ), [2] = array( 'code' => '234567', 'title' => 'something else', 'price' => '3.00', 'other_value' => '333333' ), [3] = array( 'code' => '345678', 'title' => 'another thing', 'price' => '4.00', 'other_value' => NULL ), )

lo que debo hacer es para cada fila, si el código clave aparece más de una vez, combine las filas en una pero cree una nueva matriz para el otro_valor así

 array( [0] = array( 'code' => '123456', 'title' => 'something', 'price' => '2.00', 'other_value' => array( [0] => '555555', [1] => '666666' ) ), [1] = array( 'code' => '234567', 'title' => 'something else', 'price' => '3.00', 'other_value' => '333333' ), [2] = array( 'code' => '345678', 'title' => 'another thing', 'price' => '4.00', 'other_value' => NULL ), )

¿Cuál es la mejor manera de lograr esto?

Pensé en recorrer cada fila y verificar la existencia de esa clave/valor y luego hacer algo si existe.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

@AdRock espero que desee fusionar la matriz en caso de que el 'código' sea el mismo, si es así, intente debajo de uno:

 <?php $arr = array( array( 'code' => '123456', 'title' => 'something', 'price' => '2.00', 'other_value' => '555555' ), array( 'code' => '123456', 'title' => 'something', 'price' => '2.00', 'other_value' => '666666' ), array( 'code' => '234567', 'title' => 'something else', 'price' => '3.00', 'other_value' => '333333' ), array( 'code' => '345678', 'title' => 'another thing', 'price' => '4.00', 'other_value' => NULL ) ); echo "<pre>"; print_r($arr);// array before $isExist = array(); foreach($arr as $key => $value){ if(in_array($value["code"], $isExist)){ $getKey = array_search($value["code"], $isExist); $arr[$getKey]["other_value"] = array($arr[$getKey]["other_value"], $value["other_value"]); unset($arr[$key]); } else{ $arr[$key] = $value; } $isExist[$key] = $value["code"]; } echo "<pre>"; print_r(array_values($arr));// array after ?>
over 4 years ago · Santiago Trujillo Denunciar

0

El enfoque que sugeriría es recorrer la matriz y almacenar el valor del code en una nueva matriz y almacenar todo el conjunto de resultados en una nueva matriz. Con cada iteración, verifique si el valor está presente o no en la matriz almacenada del valor del code . Y si se encuentra el valor, en ese caso, obtenga la clave de la matriz de code y use la misma clave para la matriz de resultados y guárdela dentro de other_value . Espero que tenga sentido.

over 4 years ago · Santiago Trujillo Denunciar

0

Recorrer la matriz y crear una nueva matriz utilizando los valores de 'código' como claves podría ser el método más simple. En ese caso, puede verificar si la clave ya existe.

 $new_array=array(); foreach($array as $part){ $code_as_key = $part['code']; //if code allready in the new array, just add a new value if( isset($new_array[$code_as_key]) ){ $new_array[$code_as_key]['other_value'][] = $part['other_value']; } //else add the new code else{ $new_array[$code_as_key]=$part; } } //re-index the new array, starting from key 0 $new_array=array_values($new_array);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda