Php 即使数组值为空,条件也会失败
我有一段代码,其中即使数组为空,条件也会失败。 代码如下:Php 即使数组值为空,条件也会失败,php,Php,我有一段代码,其中即使数组为空,条件也会失败。 代码如下: echo "<pre>"; print_r($_FILES['jform']['name']['gallery']); 这就是条件: foreach ( array_keys( $_FILES['jform']['gallery'] ) AS $key ) { if ( UPLOAD_ERR_OK == $_FILES['jform']['gallery']['error'][$key] ) { /
echo "<pre>";
print_r($_FILES['jform']['name']['gallery']);
这就是条件:
foreach ( array_keys( $_FILES['jform']['gallery'] ) AS $key ) {
if ( UPLOAD_ERR_OK == $_FILES['jform']['gallery']['error'][$key] ) {
// do the stuff with the uploaded file in $_FILES['jform']['gallery']['tmp_name'][$key]
}
}
它应该失败,但程序进入
if
块。为什么?从打印()中可以看出,数组不是空的-它有一个元素,另一侧看起来像空白或空的
更新
我建议您阅读,您将了解到name
是文件的原始名称,tmp\u name
是刚刚上载的临时文件的随机名称
根据我的经验,您应该检查
您感兴趣的支票是:
$galfile = $_FILES['jform']['name']['gallery'];
if(!empty($galfile) && !empty($galfile[0]) )
{
//do something
}
注意
gallery
位于name
之前的数组的名称,从打印内容中可以看出,数组不是空的,它有一个元素,另一侧看起来像空白或空的
更新
我建议您阅读,您将了解到name
是文件的原始名称,tmp\u name
是刚刚上载的临时文件的随机名称
根据我的经验,您应该检查
您感兴趣的支票是:
$galfile = $_FILES['jform']['name']['gallery'];
if(!empty($galfile) && !empty($galfile[0]) )
{
//do something
}
注意gallery
在name
之前的数组的名称,在您的例子中print\r()告诉您galfile==array(“”)//1个元素在数组中
根据唯一的array()//0个元素
被认为是空的。因此,if语句执行正确
在你的情况下,你应该写:
$array = array(0=>'');
$array1 = array_filter($array);
print_r($array1);
if(!empty($array1)){
echo "has elememt";
}else{
echo "empty";
}
在您的例子中,print_r()告诉您galfile==array(“”)//1个元素在数组中
根据唯一的array()//0个元素
被认为是空的。因此,if语句执行正确
在你的情况下,你应该写:
$array = array(0=>'');
$array1 = array_filter($array);
print_r($array1);
if(!empty($array1)){
echo "has elememt";
}else{
echo "empty";
}
正如您所看到的,数组不是空的,它有一个空元素 解决方法是r,它将消除空白数据
$array1 = array_filter($array,"call_back_function");
function call_back_function($val){
return trim($val);
}
这就是你需要的
更新
如果该值包含多个空格怎么办?是的,可以使用回调函数来处理
$galfile = array_filter($_FILES['jform']['name']['gallery']);
if(!empty($galfile))
{
//do something
}
正如您所看到的,数组不是空的,它有一个空元素 解决方法是r,它将消除空白数据
$array1 = array_filter($array,"call_back_function");
function call_back_function($val){
return trim($val);
}
这就是你需要的
更新
如果该值包含多个空格怎么办?是的,可以使用回调函数来处理
$galfile = array_filter($_FILES['jform']['name']['gallery']);
if(!empty($galfile))
{
//do something
}
使用阵列时,在检查是否为空之前,可以使用或类似的函数清理阵列:
if($_FILES['jform']['error']['gallery'] == 0)
{
//do something
}
但当您使用全局数组\u文件时,更正确的方法是检查错误:
注意:如果要筛选所有数组元素,可以在处理数组时使用,在检查是否为空之前,可以使用或类似的功能清理数组:
if($_FILES['jform']['error']['gallery'] == 0)
{
//do something
}
但当您使用全局数组\u文件时,更正确的方法是检查错误:
另外,如果要过滤所有数组元素,可以使用,那么如何克服此问题??这是输入框。@amit-打印的输出是什么($\u文件['jform']['gallery']['name']);那么我该如何克服这个问题呢??这是输入框。@amit-打印的输出是什么($\u文件['jform']['gallery']['name']);您确定元素为“”-也可以是两个空格!?你为什么要过滤一个值呢?它可能是存在的原因!您确定元素为“”-也可以是两个空格!?你为什么要过滤一个值呢?它可能是存在的原因!