【问题标题】:foreach variables into arrayforeach 变量到数组中
【发布时间】:2011-12-15 21:05:39
【问题描述】:

这是我用来上传带有 HTML5 标记的多张照片的代码。

foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
    $rand_file_name = rand(1,1000000);
    if ($_FILES['files']['type'][$key] == "image/jpeg" || $_FILES['files']['type'][$key] == "image/gif" || $_FILES['files']['type'][$key] == "image/png" || $_FILES['files']['type'][$key] == "image/JPEG" || $_FILES['files']['type'][$key] == "image/GIF" || $_FILES['files']['type'][$key] == "image/PNG") {
        if ($_FILES['files']['size'][$key] < 512000){
            move_uploaded_file($tmp_name, "../../../assets/users/$user_id/photos/$browser_album_id/$rand_file_name.jpg");
            $photo_name = $_FILES['files']['name'][$key];
            $photo_name = str_replace(".jpg", "", $photo_name);
            $photo_name = str_replace(".png", "", $photo_name);
            $photo_name = str_replace(".gif", "", $photo_name);
            $insert_database = mysql_query("INSERT INTO photo_album_photos (random_photo_name,belonging_album_id,photo_name) VALUES ('$rand_file_name','$browser_album_id','$photo_name')");
            $num_files_added++;
        }
    }
}

$num_files_added 将计算添加了多少文件。

我想要实现的是将 $rand_file_name(s) 收集到一个数组中。每张图片都有一个随机名称,因此一张图片可能是 812532.jpg,下一张可能是 246546.jpg。

我想将文件名插入到数据库中的数组中。所以上面的例子将在一个数组中。例如数组(812532,246546);

当然,我不希望任何人直接为我编写代码,只是帮助和指导! :)

【问题讨论】:

  • 看你的就够了 -> $arr_files[] = $rand_file_name;

标签: php arrays variables foreach


【解决方案1】:

foreach之前,引入一个变量$file_names = array();作为空白数组

在 foreach 循环中,试试这个:

$file_names[] = $rand_file_name;

然后,您可以访问将存储在$file_names 变量中的数组。 :)

把它们变成逗号分隔的字符串

在foreach循环之前引入$file_names = ''

然后在循环中,这样做:

$file_names .= $rand_file_name . ',';

在关闭 foreach 循环之后,这个:

$file_names = substr($file_names,0,-1);

【讨论】:

  • 当我回显这个时,它应该说数组吗?
  • 是的,它是一个数组。要查看数组值,请执行 print_r($file_names)
  • 我想让它在数据库中说的是812532,246546。我该怎么办?
  • 在这种情况下,您可以将文件名添加到字符串,而不是数组。请查看编辑后的帖子
  • 讨厌听起来很愚蠢,但编辑后的帖子在哪里?我看了你上面的帖子,但看起来一样?
【解决方案2】:

在 PHP 中,您可以通过不指定索引来附加到数组。

例如,看看这个循环:

for ($i = 0; $i < 100; $i++)
{
    $a[] = "file$i";
}

每次循环执行时,数组$a 将包含一个新元素,如file1file2file3...

希望有帮助!

【讨论】:

    【解决方案3】:

    $rand_file_names = 数组();

    $rand_file_names[] = $rand_file_name;

    我不建议在数据库中将 $rand_file_names 存储为 array(812532,246546)。如果这就是你要找的,你应该试试serialize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      相关资源
      最近更新 更多