Estoy tratando de verificar si existe un $ _POST y, si lo hace, imprimirlo dentro de otra cadena, si no, no imprimir en absoluto.
algo como esto:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
¡Cualquier ayuda sería genial!
empty()
es no correcto para la opción # 1, ya que en php, la cadena'0'
es equivalente afalse
- yempty()
regresatrue
para todos los valores equivalentes a falso . Entoncesempty
, al usar , el código omitiría la impresión si el valor fuera'0'
. Si desea excluir la cadena vacía, consulte la respuesta de Augustus.Todo el mundo dice que use isset (), que probablemente funcione para usted.
Sin embargo, es importante que comprenda la diferencia entre
$_POST['x'] = NULL;
y$_POST['x'] = '';
isset($_POST['x'])
volveráfalse
en el primer ejemplo, pero volverátrue
en el segundo aunque si intenta imprimir cualquiera de los dos, ambos devolverán un valor en blanco.Si
$_POST
viene de un campo / formulario introducido por el usuario y se deja en blanco, CREO (aunque no estoy 100% seguro de esto) que el valor será "" pero NO NULO.Incluso si esa suposición es incorrecta (¡que alguien me corrija si me equivoco!), Es bueno saber lo anterior para uso futuro.
fuente
empty()
es no correcto en este caso, debido a que en php, la cadena'0'
es equivalente afalse
- yempty()
regresatrue
para todos los valores equivalentes a falso . Entoncesempty
, al usar , el código omitiría la impresión si el valor fuera'0'
.Sorprendido que no se haya mencionado
fuente
isset($_POST['fromPerson']
estátrue
, aunqueif($_SERVER['REQUEST_METHOD'] == 'POST'
seafalse
. A menos que exista tal situación, todo lo que se necesita es laisset...
pieza.fromPerson
Puede que no esté presente, pero POST aún puede existir. La pregunta era: "Si $ _POST existe". y solo en un ejemplo, se usa $ _POST ['fromPerson']. En algunas situaciones, como @goat describe aquí , incluso sifromPerson
fuera un nombre de envío, es posible que no esté presente en POST.fuente
La forma correcta de verificar si existe una clave de matriz es la función
array_key_exists()
La diferencia es que cuando lo tienes
$_POST['variable'] = null
significa que la clave existe y se envió pero el valor era nuloLa otra opción es
isset()
cuál verificará si existe una clave de matriz y si se configuróLa última opción es usar
empty()
que verificará si existe una clave de matriz si está configurada y si el valor no se considera vacío.Ejemplos:
Con respecto a su pregunta
La forma correcta de verificar si se envió el valor es usar array_key_exists () con verificación del método de solicitud
Pero hay algunos casos que dependen de su lógica donde
isset()
y tambiénempty()
pueden ser buenos.fuente
empty
. De acuerdo con el comentario de Shi sobre la respuesta de Augusto Francisco ,empty()
es no correcta como una opción alternativa, porque en php, la cadena'0'
es equivalente afalse
- yempty()
regresatrue
para todos los valores equivalentes a falso . Entoncesempty
, al usar , el código omitiría la impresión si el valor fuera'0'
. Si desea excluir la cadena vacía, consulte la respuesta de Augustus.isset
no es apropiado.De acuerdo con la documentación de PHP: http://php.net/manual/en/function.array-key-exists.php
(ver Ejemplo # 2 array_key_exists () vs isset () )
El método
array_key_exists
está diseñado para verificar la presencia de claves en la matriz.Entonces, el código en la pregunta podría cambiarse de la siguiente manera:
fuente
isset
solución cuando el campo de publicación está establecido pero contiene NULL. Esta es una buena alternativa , si desea permitir la entradaNULL
en laelse
sucursal. Sin embargo , es un error si se necesita una cadena; en esa situaciónisset
hace lo correcto, pero este código no - pasará elNULL
valor. La respuesta posterior de Robert demuestra la diferencia.Todos los métodos están realmente desaconsejados, es una advertencia en Netbeans 7.4 y seguramente es una buena práctica no acceder directamente a las variables superglobales, use un filtro en su lugar
fuente
isset
es mucho más legible que una expresión de filtro. Pero gracias por señalar esto; es una opción útil a considerar.empty
, tropezadas por la escritura suelta de php; es difícil imaginar que acceder a $ _POST se consideraría deficiente estilo.)Tratar
fuente
empty($_POST['fromPerson'])
hace esta prueba combinada. Más fácil de leer y escribir :)empty('0')
devuelvetrue
. Entonces no es lo mismo.Intenta ?
isset
($_POST['fromPerson'])
fuente
fuente
is_array()
comprueba si es una matriz, la segunda parte comprueba si tiene un elemento con la clave'fromPerson'
.if( isset($_POST['fromPerson']) )
es correcto.Puede usar una función y regresar, mejor que dirigir el eco.
fuente
Me gusta comprobar si está configurado y si está vacío en un operador ternario.
fuente
empty('0')
estrue
. Así que mejor no tenerversion
0
, ouserID
0
, etc.Me gustaría agregar mi respuesta a pesar de que este hilo tiene años y ocupó un lugar destacado en Google para mí.
Mi mejor método es probar:
Como
$_POST
es una matriz, si el script se carga y no hay datos presentes en el$_POST
variable, tendrá una longitud de matriz de 0. Esto se puede usar en una instrucción IF.También puede preguntarse si esto arroja un error de "índice indefinido", ya que estamos verificando si
$_POST
está configurado ... De hecho,$_POST
siempre existe, el error "índice indefinido" solo aparecerá si intenta buscar un $ _POST valor de matriz que no existe.$_POST
siempre existe en sí mismo estando vacío o tiene valores de matriz.$_POST['value']
puede no existir, lo que arroja un error de "índice indefinido".fuente