PHP Massive数组分为两个唯一的数组

时间:2014-03-23 21:24:15

标签: php arrays sorting

首先抱歉我犯的任何错误:)

其次,我有一个php数组的问题: 我有一个表(用户),其中有0.5万用户。我必须选择那里的每个用户电子邮件(它们都是唯一的电子邮件)。

我有一个包含50k用户的文件(import.txt)。他们都有独特的电子邮件。

我有第二个表(折扣),其中users.id与我的company_id一起放置(每个users.id与company_id配对,因此无法重复)。

问题:

  1. 我必须检查哪些import.txt电子邮件已注册 系统并对其进行排序(以制作仅包含已注册的数组 用户)。
  2. 然后我必须创建一个包含用户的数组 未注册。
  3. 之后,我必须检查注册的用户ID 存在于我的折扣表中,如果存在,则将其从数组中删除。 如果它不存在我必须插入它。 (这意味着我必须获取电子邮件的ID,并检查该ID是否在我的折扣表中)
  4. 接下来就是我有一个包含未注册用户的数组。这很糟糕,因为我必须做一个curl POST请求来接收用户ID(在 换句话说 - 通过API注册它并将其插入折扣中 表
  5. 有没有人有任何想法如何让这个脚本快速运行?我有一个运行多个循环的想法,但也许有更好的解决方案呢?

    提前感谢您的帮助! 如果有什么不清楚 - 请评论,我会解决它

    更好的可视化方案:Scheme link

1 个答案:

答案 0 :(得分:0)

//this will generate an array of all emails in import.txt, assuming they are 1 per line
$emails = file('import.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

//this will create a string of the $emails array to use for an IN() SQL query
$emails_string = "'". implode("', '", $emails) ."'";

//this will give you all emails in imports.txt that are registered
$exists = $pdo->query("SELECT email FROM users WHERE email IN($emails_string)");

//this will give you all emails in imports.txt that are NOT registered
$not_exists = $pdo->query("SELECT email FROM users WHERE email NOT IN($emails_string)");

这应该是一个好的开始。你可能不得不最后使用#3和#4的foreach()循环。