remove - strip_tags php ejemplo
¿Cómo verificar si una matriz está vacía usando PHP? (18)
players
estarán vacíos o en una lista separada por comas (o un solo valor). ¿Cuál es la forma más fácil de verificar si está vacía? ¿Asumo que puedo hacerlo tan pronto como $gameresult
matriz $gamerow
en $gamerow
? En este caso, probablemente sería más eficiente omitir la explosión de la lista $playerlist
si está vacía, pero por el bien de la discusión, ¿cómo comprobaría si una matriz también está vacía?
$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow[''players'']);
¿Por qué nadie ha dicho esta respuesta:
$array = [];
if($array == []) {
// array is empty
}
Algunas respuestas decentes, pero solo pensé que me expandiría un poco para explicar más claramente cuando PHP determina si una matriz está vacía.
Notas principales:
Una matriz con una clave (o claves) se determinará como NO vacía por PHP.
Como los valores de matriz necesitan claves para existir, tener o no valores en una matriz no determina si está vacía, solo si no hay claves (Y, por lo tanto, no hay valores).
Por lo tanto, verificar una matriz con empty()
no le dice simplemente si tiene valores o no, le dice si la matriz está vacía y las claves son parte de una matriz.
Entonces, considere cómo está produciendo su matriz antes de decidir qué método de verificación utilizar.
Por ejemplo, una matriz tendrá claves cuando un usuario envíe su formulario HTML cuando cada campo de formulario tenga un nombre de matriz (es decir, name="array[]"
).
Se producirá una matriz no vacía para cada campo, ya que habrá valores de clave incrementados automáticamente para cada matriz de campo de formulario.
Tome estas matrices por ejemplo:
/* Assigning some arrays */
// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");
// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";
// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '''';
$ArrayThree[] = '''';
Si hace eco de las claves de matriz y los valores de las matrices anteriores, obtendrá lo siguiente:
ARRAY ONE:
[UserKeyA] => [UserValueA]
[UserKeyB] => [UserValueB]Array dos
[0] => [UserValue01]
[1] => [UserValue02]ARRAY TRES:
[0] => []
[1] => []
Y al probar las matrices anteriores con empty()
obtienen los siguientes resultados:
ARRAY ONE:
$ ArrayOne no está vacíoArray dos
$ ArrayTwo no está vacíoARRAY TRES:
$ ArrayThree no está vacío
Una matriz siempre estará vacía cuando asigne una matriz pero no la use más adelante, como por ejemplo:
$ArrayFour = array();
Esto estará vacío, es decir, PHP devolverá VERDADERO cuando se use si está empty()
en lo anterior.
Entonces, si su matriz tiene claves, ya sea por ejemplo con los nombres de entrada de un formulario o si las asigna manualmente (es decir, cree una matriz con los nombres de las columnas de la base de datos como claves pero no valores / datos de la base de datos), entonces la matriz NO estará empty()
.
En este caso, puede hacer un bucle de la matriz en un foreach, comprobando si cada clave tiene un valor. Este es un buen método si necesita ejecutar la matriz de todos modos, tal vez verificando las claves o limpiando los datos.
Sin embargo, no es el mejor método si simplemente necesita saber "si existen valores" devuelve VERDADERO o FALSO . Existen varios métodos para determinar si una matriz tiene algún valor cuando se sabe que tendrá claves. Una función o clase puede ser el mejor enfoque, pero como siempre depende de su entorno y de los requisitos exactos, así como de otras cosas, como lo que hace actualmente con la matriz (si corresponde).
Aquí hay un enfoque que usa muy poco código para verificar si una matriz tiene valores:
Utilizando array_filter()
:
Iteriza sobre cada valor en la matriz pasándolos a la función de devolución de llamada. Si la función de devolución de llamada devuelve verdadero, el valor actual de la matriz se devuelve a la matriz de resultados. Se conservan las claves de matriz.
$EmptyTestArray = array_filter($ArrayOne);
if (!empty($EmptyTestArray))
{
// do some tests on the values in $ArrayOne
}
else
{
// Likely not to need an else,
// but could return message to user "you entered nothing" etc etc
}
La ejecución de array_filter()
en las tres matrices de ejemplo (creadas en el primer bloque de código en esta respuesta) da como resultado lo siguiente:
ARRAY ONE:
$ arrayone no está vacíoArray dos
$ arraytwo no está vacíoARRAY TRES:
$ arraythree está vacío
Entonces, cuando no hay valores, ya sea que existan claves o no, usar array_filter()
para crear una nueva matriz y luego verificar si la nueva matriz está vacía muestra si había valores en la matriz original.
No es ideal y un poco desordenado, pero si tiene una gran variedad y no necesita recorrerlo por ninguna otra razón, entonces este es el más simple en términos de código necesario.
No tengo experiencia en la comprobación de gastos generales, pero sería bueno saber las diferencias entre el uso de array_filter()
y foreach
comprobar si se encuentra un valor.
Obviamente, el punto de referencia debería estar en varios parámetros, en arreglos pequeños y grandes y cuando hay valores y no, etc.
Creo que la mejor manera de determinar si la matriz está vacía o no es usar count () de esta manera:
if(count($array)) {
return ''anything true goes here'';
}else {
return ''anything false'';
}
Esto parece funcionar para todos los casos.
if(!empty(sizeof($array)))
He resuelto este problema con el siguiente código.
$catArray=array();
$catIds=explode('','',$member[''cat_id'']);
if(!empty($catIds[0])){
foreach($catIds as $cat_id){
$catDetail=$this->Front_Category->get_category_detail($cat_id);
$catArray[]=$catDetail[''allData''][''cat_title''];
}
echo implode('','',$catArray);
}
Las soluciones anteriores no funcionaron para mí. Más bien usé una forma más confiable (puede tener gastos generales de movimiento):
$countarr = count($newArr); // Count the elements in an array.
$checkarr = "" ; //Initialize the value of variable to blank.
for($x=0;$x<$countarr;$x++)
{
$checkarr = $newArr1[$x] ;
if($checkarr != "" )
{
// do stuff if array is not empty.
}
}
Puedes usar array_filter()
que funciona muy bien para todas las situaciones:
$ray_state = array_filter($myarray);
if (empty($ray_state)) {
echo ''array is empty'';
} else {
echo ''array is not empty'';
}
Qué tal si:
DepartmentPerSchool = array(); (empty(is_array($DepartmentPerSchool))) ? $DepartmentPerSchool //or echo is not empty : array(''not set''=>''Not set. Contact Admin''); //or echo is empty
Si desea determinar si la variable que está probando es en realidad explícitamente una matriz vacía, podría usar algo como esto:
if ($variableToTest === array()) {
echo ''this is explicitly an empty array!'';
}
Si desea excluir las filas falsas o vacías (como 0 => ''''
), donde el uso de empty()
fallará, puede intentar:
if (array_filter($playerlist) == []) {
// Array is empty!
}
array_filter()
: Si no se proporciona devolución de llamada, se eliminarán todas las entradas de la matriz igual a FALSE (consulte la conversión a boolean).
Si desea eliminar todas las cadenas NULL, FALSE y vacías ( ''''
), pero deje valores cero ( 0
), puede usar strlen
como devolución de llamada, por ejemplo:
$is_empty = array_filter($playerlist, ''strlen'') == [];
Si desea verificar el contenido de la matriz, puede utilizar:
$arr = array();
if(!empty($arr)){
echo "not empty";
}
else
{
echo "empty";
}
Vea aquí: http://codepad.org/EORE4k7v
Si solo necesita verificar si hay CUALQUIER elemento en la matriz
if (empty($playerlist)) {
// list is empty.
}
Si necesita limpiar los valores vacíos antes de verificar (generalmente se hace para evitar explode
cadenas extrañas):
foreach ($playerlist as $key => $value) {
if (empty($value)) {
unset($playerlist[$key]);
}
}
if (empty($playerlist)) {
//empty array
}
Una matriz vacía es falsey en PHP, por lo que ni siquiera necesita usar empty()
como otros han sugerido.
<?php
$playerList = array();
if (!$playerList) {
echo "No players";
} else {
echo "Explode stuff...";
}
// Output is: No players
El empty()
de PHP empty()
determina si una variable no existe o tiene un valor falso (como array()
, 0
, null
, false
, etc.).
En la mayoría de los casos, solo desea comprobar !$emptyVar
. Use empty($emptyVar)
si la variable no se ha establecido Y NO lo hará para activar una E_NOTICE
; En mi opinión, esta es generalmente una mala idea.
Yo uso este codigo
$variable = array();
if( count( $variable ) == 0 )
{
echo "Array is Empty";
}
else
{
echo "Array is not Empty";
}
Pero tenga en cuenta que si la matriz tiene una gran cantidad de claves, este código dedicará mucho tiempo a contarlas, en comparación con las otras respuestas aquí.
count($gamerow[''players''])
será 0.
$gamerow = mysql_fetch_array($gameresult);
if (!empty(($gamerow[''players''])) {
$playerlist = explode(",", $gamerow[''players'']);
}else{
// do stuf if array is empty
}
empty($gamerow[''players''])
is_array($detect) && empty($detect);