我目前正在为我的网站开发一个消息传递系统,允许人们向最多9个人发送消息,(10个包括作者)。我在我的数据库上有一个名为'对话'包含以下字段:
然后我有一张名为“private_messages'这些领域:
所以对话中的所有参与者都存储在对话表中,实际的消息存储在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>";
我遇到的问题是,当我回复$ result时,我会得到一个额外的计数。如果我将该字段留空,则它正确地表示0,但是任何条目都会返回2,这样就会在验证后面给我一个异常。
我完全被难过了,任何帮助都会非常感激!
答案 0 :(得分: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>";
Intead do:
// 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