• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

217
Views
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.

about 3 years ago · Santiago Trujillo
3 answers
Answer question

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 ?>
about 3 years ago · Santiago Trujillo Report

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.

about 3 years ago · Santiago Trujillo Report

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);
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error