Si la declaración en el bucle foreach no funciona correctamente

Tengo un foreach bucle con una declaración if en su interior de modo que si $value iguales 'Messages' debería incrementar mi variable num1 by 1, pero la instrucción if no parece funcionar correctamente. Cualquier ayuda será muy apreciada.

EDIT: Si me deshago de la declaración if y solo echo $value, hará eco del valor de cada sección de la matriz.

Código:

 <?php
     $num1 = 0;
     foreach($inventory['Category'] as $key => $value) {
         if ($value == 'Messages') {  
             $num1++;  
         }
     }
 ?>

preguntado el 08 de noviembre de 11 a las 18:11

Pruebe solo un var_dump ($ value == 'Messages') en el bucle en lugar del if - si devuelve falso cuando debería devolver verdadero, hay algo mal en la comparación. A continuación, puede probar var_dump ($ value) para reducir lo que devuelve esa variable. -

¿Estás seguro de que $ value will contiene exactamente 'Mensajes'? Quiero decir, ¿sin espacio ni nada más? Haz un var_dump para comprobarlo. -

Puedes hacer un var_dump() en `$ inventario ['Categoría'] para verificar que los valores sean Mensajes primero? De lo contrario, el código se ve bien. -

Por curiosidad, ¿cuál sería la clave? -

No estoy seguro de lo que intentas hacer, pero array_count_values podría ser de utilidad para ti. -

2 Respuestas

La única razón $num1 no está aumentando podría deberse a $value no es 'Mensajes'. Intenta hacer eco $value variable y ver.

respondido 08 nov., 11:22

¿Estás seguro de que no quieres hacer esto?

<?php
 $num1 = 0;
 foreach($inventory as $key => $value) {
         if ($value == 'Messages') {  $num1++;  }
 }
 ?>

Si tu matriz tiene una clave llamada $inventory['Messages'] esto lo encontraría. Su muestra original busca $inventory['Category']['Messages'].

respondido 08 nov., 11:22

Esto encontrará el valor Messages en la matriz $inventory. Esto no encontraría $inventory['Messages'] - Para hacer eso, necesitaría comparar $key a 'Messages'no, $value. Por esa razón, la muestra original del OP no busca $inventory['Category']['Messages']. - nickb

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.