2014-03-25 41 views
0

我目前正在为我的网站制作一个消息传递系统,该系统允许人们向其他9个人(包括作者)发送消息。我有我的数据库称为 '会话' 具有以下字段的表:计数数组值返回额外结果

  • convo_id
  • 作者
  • recipient_1
  • recipient_2
  • recipient_3
  • recipient_4
  • recipient_5
  • recipient_6
  • recipient_7
  • recipient_8
  • recipient_9
  • 标题
  • 时间戳

然后我有一个叫做 'private_messages' 这些领域的表:

  • MESSAGE_ID
  • convo_id
  • 作者
  • 时间戳
  • 消息

所以在会话中的所有参与者都存储在谈话表,并存储在p_m表中的实际消息。

我使用的是单一的输入字段的形式为受助上,用逗号分隔的名字,然后对另一侧下面的代码提交:

$recipients = explode(",", $_POST['recipient']); 
$duplicate = array($recipients[0],$recipients[1],$recipients[2],$recipients[3],$recipients[4],$recipients[5],$recipients[6],$recipients[7],$recipients[8],$recipients[9],$recipients[10]); 
$unique = array_values(array_unique($duplicate)); 
$result = count($unique); 
echo "$result<br>"; 

的问题,我有,当我回应$结果时,我得到一个额外的计数。如果我将该字段留空,则它正确地表示为0,但是任何条目都会返回2,这会在验证后进一步发生异常。

我完全难住,任何帮助将不胜感激!

+0

您是否尝试过error_log'ing的$ _ POST [ '接受者']?也许你会将作者添加到收件人列表中。 –

+0

是的,$ _POST ['recipient']只返回输入的值。 – user3461991

+1

嗯,你添加11个收件人的数组...索引0到10.为什么你甚至做手动数组的东西? –

回答

0

我觉得你的问题是你的$重复步骤

// assuming $_POST['recipient'] = bob,fred 

$recipients = explode(",", $_POST['recipient']); 
// $recipients is array ['bob','fred'] 
$duplicate = array($recipients[0],$recipients[1],$recipients[2],$recipients[3],$recipients[4],$recipients[5],$recipients[6],$recipients[7],$recipients[8],$recipients[9],$recipients[10]); 
// $duplicate is ['bob','fred',null, null, null, null, null, null, null, null, null] 
$unique = array_values(array_unique($duplicate)); 
// $unique is ['bob','fred',null] 
$result = count($unique); 
//$result = 3 
echo "$result<br>"; 

这一翻译做:

// assuming $_POST['recipient'] = bob,fred 

$recipients = explode(",", $_POST['recipient']); 
// $recipients is array ['bob','fred'] 
$unique = array_values(array_unique($recipients)); 
// $unique is ['bob','fred'] 
$result = count($unique); 
//$result = 2 
echo "$result<br>"; 

说明问题的键盘:http://codepad.org/YZSvieEr

+0

辉煌,你是对的。谢谢! – user3461991