【问题标题】:foreach loop with first value of array具有数组第一个值的 foreach 循环
【发布时间】:2014-08-20 12:54:03
【问题描述】:

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

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

现在的问题:
为了动态添加和删除字段,有一个 foreach 循环回显所有上传文件。
因为数组使用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;
        }
    }
}
?>

【问题讨论】:

  • 所以你的代码可以工作,只是你不需要$file['url'] 部分并想摆脱它?
  • 嗯,很有趣。我没有想到这一点。我对 foreach $file 有疑问,因为它需要整个数组......你会怎么做。把url的值清空就行了?
  • 我实际上仍然不确定哪个部分坏了。你的代码有效吗?
  • 代码可以正常工作,这不是问题,如果我不清楚,抱歉。问题是,如果一个文件被保存,它会将两个值放在 db 中一个名为:file 和 url 的数组中。如果 foreach 运行,它会输出文件和 url。我只希望文件输出。希望这更清楚
  • 我没有看到url 在上面的代码 sn-p 中是如何呈现的。你只是在引用file,所以不应该这样。

标签: php wordpress loops foreach


【解决方案1】:

根据您提供的转储,$file 仅表示单个文件而不是文件集合,因此 foreach 没有任何内容。您应该可以使用$file['file'] 而不是$csv['file'] 来检查isset($file['file']) 然后printf

<?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;
}

【讨论】:

  • 嗯.. 我会看看这个。问题是用户将能够向数组添加更多文件......那么它应该是 foreach'ing
  • 我明白你想要什么,但如果 $file 不是文件数组,那么你需要修复其他问题。您是否都看过插件高级自定义字段?它使整个事情变得如此简单。
  • 不。会看看。谢谢你的努力。太棒了!
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多