Combinar matrices asociativas con diferentes conjuntos de claves para crear una matriz unificada puede ser un desafío. Esta pregunta explora un método para lograr esto, y el resultado deseado es una matriz donde las claves se fusionan y las columnas faltantes se completan con un valor predeterminado.
Para lograr esto, se sugirió emplear la función array_merge en conjunto con una serie de claves cuidadosamente elaborada:
$keys = array(); foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) { $keys[$key] = ''; }
Este bucle itera sobre todos los elementos en las matrices de entrada, extrayendo las claves únicas y asignándoles valores vacíos. La matriz $keys resultante contiene todas las claves posibles que pueden existir en la matriz fusionada final.
A continuación, cada matriz de entrada se fusiona con la matriz $keys:
$data = array(); foreach($d as $values) { $data[] = array_merge($keys, $values); }
Este paso garantiza que cada fila de la matriz final tenga todas las claves posibles, y que los valores faltantes se rellenen con una cadena vacía. La matriz $data resultante es la matriz fusionada y completada deseada.
Como alternativa, se puede crear y fusionar una matriz de par de claves con cada matriz de entrada:
$keys = array_keys(call_user_func_array('array_merge', $d)); $key_pair = array_combine($keys, array_fill(0, count($keys), null)); $values = array_map(function($e) use ($key_pair) { return array_merge($key_pair, $e); }, $d);
Este método esencialmente crea un mapa de todas las claves posibles para valores nulos. Luego, cada matriz de entrada se fusiona con la matriz $key_pair, logrando el mismo resultado que el método anterior.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3