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.
3 respuestas
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;
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; ?>
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! :)
Preguntas relacionadas
Nuevas preguntas
php
PHP es un lenguaje de secuencias de comandos interpretado, dinámico, orientado a objetos y ampliamente utilizado, diseñado principalmente para el desarrollo web del lado del servidor. Se utiliza para preguntas sobre el lenguaje PHP.