foreach循环具有数组的第一个值

时间:2014-08-20 12:54:03

标签: php wordpress loops foreach

我有一个自定义WordPress元数据框,我上传文件 只有位置保存到数据库,文件(csv)保存到服务器 在fgetcsv的帮助下,我将csv发送到页面(前端)

我希望能够在一个页面上拥有多个文件。
因此,我(在互联网的帮助下)创建了动态字段,仅在必要时添加 在wp_upload_bits的帮助下将文件保存到数据库中,这意味着有一个使用文件名和文件URL保存的数组。所以,为了回应它们,我使用:$file['file']或$ file [' url']

现在问题:
为了动态添加和删除字段,有一个foreach循环回显所有uploades文件。
因为数组用wp_upload_bits保存在数据库中,所以我总是得到两个输出(文件和URL),我只想要文件。

这是代码。 我似乎无法弄清楚:

<?php 
$file = get_post_meta(get_the_ID(), 'meta_box_csv', true);
$c = 0;
$i = 0;
if ( count( $file['file'] ) > 0 ) {
    foreach( $file as $csv ) {
        if ( isset( $csv['file']) ) {
            printf( '<p><input type="file" id="meta_box_csv_'.$i.'" name="meta_box_csv_'.$c.'" value="'.$csv['file'].'" size="15" /><span class="remove">Remove</span> </p>' );
            $c = $c +1;
            $i = $i +1;
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

根据您提供的转储,$file仅代表单个文件而不是文件集合,因此foreach没有任何结果。您应该只能使用isset($file['file'])代替printf

检查$file['file']然后$csv['file']
<?php 
$file = get_post_meta(get_the_ID(), 'meta_box_csv', true);
$c = 0;
$i = 0;

if ( isset( $file['file']) ) {
    printf( '<p><input type="file" id="meta_box_csv_'.$i.'" name="meta_box_csv_'.$c.'" value="'.$file['file'].'" size="15" /><span class="remove">Remove</span> </p>' );
    $c = $c +1;
    $i = $i +1;
}