2017-04-21 65 views
0

我想找到一种方法深入查看$ _FILES数组并检索整个[type] =>数组。我已经尝试了多种方法不能与此随时随地获取:

$result = preg_grep('/\image\b/', $_FILES); 

当我输出$结果以这种方式:

echo '<pre>'; 
    print_r($result); 
    echo '</pre>'; 

我得到如下:

Array (

这当然没用。我一直在阅读手册,查看所有数组函数,但没有找到任何可行的方法。有这个PHP函数吗?任何帮助将非常感谢! 干杯,

沙克尔顿

PS我也试着使用:

foreach ($_FILES['userfile']['type'] as $key => $value) { 

创建自己的阵列上传每个文件的键和值两者。这样做的问题是变量不会创建一个具有多个 - [0] - 索引的数组,因为数组构造引用了变量。这似乎是一个死胡同。

回答

0

如果您要发送多个文件,你应该使用迭代仅$ _FILES,因为这样:

$types=array(); 
foreach($_FILES as $filename=>$arrayofvalues){ 
    $types[]=$arrayofvalues['type']; 
} 
0

呼啦里卡多, 太感谢了,这就像一个魅力。我不得不找到一种方法来平坦化结果数组,但确实找到了一个在线的函数。我也一直在寻找这个功能好几天。这是我想出的:

// Create an array of only the file type 
$types = array(); 
foreach ($_FILES as $filename => $arrayofvalues) { 
    $types[] = $arrayofvalues['type']; 
} 

// Create a sub-array of types 
foreach($types as $subArray) { 
    foreach($subArray as $val){ 
     $simple[] = $val; 
    } 
} 

echo "Simple images array:"; 
echo '<pre>'; 
print_r($simple); 
echo '</pre>'; 
"<br />"; 

// Get the key & value of just image files 
$images = preg_grep('/\image\b/', $simple); 

// Use the differenc array function to find the indices I want 
$dif = array_diff($simple, $images); 

echo "Difference:"; 
echo '<pre>'; 
print_r($dif); 
echo '</pre>'; 
"<br />"; 

当然,print_r()只是让我可以看到代码正在产生什么。输出如下: html Output

再次感谢您的协助!

干杯,

沙克尔顿

0

你的做法是有点重手与foreach循环。我准备了一个更短的方式来完成你的任务。

使用此阵:

$FILES=array(
    "file1"=>array("type"=>array("text/plain")), 
    "file2"=>array("type"=>array("image/tiff")), 
    "file3"=>array("type"=>array("")), 
    "file4"=>array("type"=>array("image/png")), 
    "file5"=>array("type"=>array("image/gif")), 
    "file6"=>array("type"=>array("image/jpeg")) 
); 

你可以有两个单行您的输出:

$simple_images=array_column(array_column($FILES,"type"),0); 
var_export($simple_images); 

echo "\n"; 

$difference=array_filter($simple_images,function($v){return strpos($v,"image")===false;}); 
var_export($difference); 

输出:

array (
    0 => 'text/plain', 
    1 => 'image/tiff', 
    2 => '', 
    3 => 'image/png', 
    4 => 'image/gif', 
    5 => 'image/jpeg', 
) 
array (
    0 => 'text/plain', 
    2 => '', 
) 

参考您的preg_grep()功能,当另一个字符串操作就足够时,最好避免使用正则表达式。这会提高性能。

+0

谢谢你mickmackusa,我会开始搞这个。在上周,我学习了各种有用的数组。过去我没有使用过它们。你的代码看起来很直截了当。再次感谢! – shackleton