Necesito obtener el recuento de los autores en la página de WordPress. En primer lugar, esta pregunta no toca la sintaxis de WordPress o algo más sobre este CMS. La pregunta es estrictamente acerca de los algoritmos php.

Entonces, tengo los elementos 10 que se obtienen por el método foreach. Y ahora debo ponerlos en la matriz $getcount para que cuenten por el método de matriz count en el lenguaje php.

Por alguna razón, el método count no funciona, porque siempre obtengo el resultado else.

<?php foreach ($coauthors_meta as $key ) :  
    $getcount = array($key);
    if (count($getcount) > 1) echo '<div class="privv">Hello!</div>';
    else echo 'Empty';
<?php endforeach; ?>

PD El método de matriz foreach ($coauthors_meta as $key ) funciona bien y muestra todos los autores en la página. Entonces el problema se esconde en otra cosa.

-1
Sviat Kuzhelev 18 ene. 2018 a las 23:53

3 respuestas

La mejor respuesta

Está creando una matriz con un elemento cada vez y luego verificando si tiene más de un elemento.

<?php foreach ($coauthors_meta as $key ) :  
    $getcount = array($key); // << always makes an array with one element
    // count will always be 1 so the else condition will always happen
    if (count($getcount) > 1) echo '<div class="privv">Hello!</div>';
    else echo 'Empty';
<?php endforeach; ?>

Cambio :

$getcount = array($key);

Para

$getcount[] = $key;
5
ryantxr 18 ene. 2018 a las 20:59

Problema :- Está asignando un solo valor a la variable $getcount dentro de foreach() (variable recreada una y otra vez y el valor actual asignado a eso).

Solución :- Reconstruya la lógica de la siguiente manera: -

//empty array declaration
<?php $getcount = [];?>
<?php foreach ($coauthors_meta as $key ) :  
    $getcount[] = $key;//assign values to the array
    if (count($getcount) > 1) echo '<div class="privv">Hello!</div>';
    else echo 'Empty';
<?php endforeach; ?>
2
Anant Singh---Alive to Die 18 ene. 2018 a las 21:05

Lo que está haciendo mal (como parece), es que está creando una nueva matriz en cada bucle foreach y asignando 1 de las claves:

<?php foreach ($coauthors_meta as $key ) :  
    $getcount = array($key); // <---- You are creating a new array!
    if (count($getcount) > 1) echo '<div class="privv">Hello!</div>';
    else echo 'Empty';
<?php endforeach; ?>

Para solucionar esto, simplemente defina su matriz antes del foreach y empuje el valor a la matriz:

<?php 
    $getcount = array();
    foreach ($coauthors_meta as $key ) :  
    $getcount[] = $key;
    if (count($getcount) > 1) echo '<div class="privv">Hello!</div>';
    else echo 'Empty';
<?php endforeach; ?>

¡Y ahora debería funcionar! :)

1
Tosindo 18 ene. 2018 a las 21:03
48330127