"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo fusionar matrices asociativas, manejar claves faltantes y completar con valores predeterminados?

¿Cómo fusionar matrices asociativas, manejar claves faltantes y completar con valores predeterminados?

Publicado el 2024-11-02
Navegar:692

How to Merge Associative Arrays, Handle Missing Keys, and Fill with Default Values?

Fusionar múltiples matrices asociativas y agregar columnas faltantes con un valor predeterminado

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.

Declaración de liberación Este artículo se reimprime en: 1729431856 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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