es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Array para mapa del sitio y unir (o fusionar) con implode.

Utilizo la función implode con la barra diagonal ‘/’, pero en este caso quiero que las últimas 2 columnas “iid” y “branch_id” se muestren así ==>>>> “iid.””“.”branch_id” Me refiero a que para las últimas 2 columnas, implode será el guión bajo ‘‘ en lugar de la barra diagonal ‘/’, pero para las primeras 4 columnas será la barra diagonal ‘/’. Ayúdeme con la solución adecuada. Gracias.

echo “Creando un Sitemap\n”;
$switzerland = New Sitemap($switzerlandcodes_sitefile,[“nombre”,”canton”,”ciudad”,”iid”,”branch_id”],”DESCONOCIDO”, $homeUrl.SWITZERLANDPATH.’/’, SWITZERLANDTABLE);
$switzerland->createSitemap();
$files = array_merge($files,$switzerland->files);

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, se puede utilizar una combinación de las funciones implode y array_map. Aquí se muestra un ejemplo de código:

    echo "Creando Sitemap\n";
    $column_names = ["nombre", "canton", "ciudad", "iid", "id_sucursal"];
    $switzerland = new Sitemap($switzerlandcodes_sitefile, $column_names, "DESCONOCIDO", $homeUrl.SWITZERLANDPATH.'/', SWITZERLANDTABLE);
    
    // Definir una función de devolución de llamada para manejar las dos últimas columnas
    $callback = function($valor, $clave) use ($column_names) {
        if ($clave >= count($column_names) - 2) {
            return str_replace('/', '_', $valor);
        }
        return $valor;
    };
    
    // Usar array_map para aplicar la función de devolución de llamada a cada fila de datos
    $data_with_underscores = array_map(function($fila) use ($callback) {
        return array_map($callback, $fila);
    }, $switzerland->data);
    
    // Usar implode para combinar los datos en una cadena con barras diagonales y guiones bajos
    $data_combined = implode('/', array_map(function($fila) {
        return implode('_', $fila);
    }, $data_with_underscores));
    
    $switzerland->createSitemap();
    $files = array_merge($files, $switzerland->files);
    

    En este código, primero se definen los nombres de las columnas como un array. Luego, creamos el objeto Sitemap como de costumbre, pasando los nombres de las columnas.

    A continuación, definimos una función de devolución de llamada que verifica si el índice de la columna actual es una de las últimas dos columnas. Si lo es, reemplaza las barras diagonales por guiones bajos. De lo contrario, deja el valor sin cambios.

    Luego usamos array_map para aplicar la función de devolución de llamada a cada fila de datos en el objeto Sitemap. Esto nos da un nuevo array donde las dos últimas columnas tienen los guiones bajos deseados.

    Finalmente, usamos implode y otro array_map para combinar los datos en una cadena con barras diagonales y guiones bajos. Esta cadena se almacena en la variable $data_combined y se puede utilizar según sea necesario.

    Tenga en cuenta que este código asume que la propiedad $switzerland->data contiene los datos del sitemap. Es posible que deba ajustar este código si su implementación es diferente.

Comments are closed.