Estoy usando el siguiente código para enumerar los primeros 7 nombres de una larga lista, para cada publicación. El problema es que cuando una determinada publicación contiene una lista de nombres inferior a 7, por cada nombre que falta hasta 7, automáticamente imprime una coma ','
Entonces, cuando los nombres son 7 o más, muestra correctamente: "nombre1, nombre2, nombre3, nombre4, nombre5, nombre6, nombre7" Mientras que, por ejemplo, si contiene solo 3 nombres, imprimirá: "nombre1, nombre2, nombre3, ,,"
¿Hay alguna forma de agregar algo en el código para excluir la impresión de comas en el caso de nombres menores a 7?
<?php $value = get_post_meta($post->ID, 'list_of_names', true); $value_array = explode(',', $value); $hrefs = []; for($i = 0; $i < 7; $i++) { $remove_space = str_replace(' ', '-', $value_array[$i]); $url = esc_url('myblogurl' . $remove_space); if ('' !== $url) { $display = esc_html($value_array[$i]); $hrefs[] = "<a href='$url'>$display</a>"; } } echo implode(",", $hrefs); ?> He estado tratando de agregar elseif($i < 6) { echo ','; antes del final, pero me informó una sintaxis de error del sistema :(
¿Algún consejo?
Limite su ciclo al tamaño de su $value_array, manteniendo también el límite de 7.
for ($i = 0, $count = count($value_array); $i < 7 && $i < $count; $i++)Otra forma de codificar la misma idea:
for ($i = 0, $min = min(7, count($value_array)); $i < $min; $i++)Tiene los 'valores' en una matriz, por lo que podría usar funciones de matriz.
<?php $values = get_post_meta($post->ID, 'list_of_names', true); $value_array = explode(',', $values); $hrefs = []; foreach (array_slice($value_array,0,7) as $value) { $remove_space = str_replace(' ', '-', $value); $url = esc_url('myblogurl' . $remove_space); if ('' !== $url) { $display = esc_html($value); $hrefs[] = "<a href='$url'>$display</a>"; } } echo implode(",", $hrefs); ?>Ver: array_slice()
Aconsejaría usar algo que no sea value como nombre de variable, si desea que otros entiendan de qué se trata su código.