为什么array_diff在输入表单中的数组时表现不同?

时间:2015-07-09 14:10:35

标签: php arrays forms array-difference

我有这样的输入表格:

<form method="POST" action="unique_value_processor.php">
<textarea cols="50" rows="8" name="usedurls"></textarea>
<textarea cols="50" rows="8" name="freshurls"></textarea>
<textarea cols="50" rows="8" name="filteredurls"></textarea>
<input type="SUBMIT" value="SUBMIT">

处理表单的文件是

$old_urls_exploded = explode("\n", $_POST['usedurls']);
$new_urls_exploded = explode("\n", $_POST['freshurls']);
$arraydiff = array_diff($new_urls_exploded, $old_urls_exploded);
print_r($arraydiff);

所以当我在表格中输入以下内容时:

方框1(old_urls_exploded):

  

蓝色,黄色

方框2(new_urls_exploded):

  黄色,蓝色,香蕉

那么它应该只返回:

  

香蕉

但是array_diff返回:

  

黄色,香蕉

然后当您手动将数组键入:

$old_urls_exploded = array('blue','yellow');
$new_urls_exploded = array('yellow','blue','banana');

然后array_diff仅返回:

  

香蕉

应该......

为什么表单会影响array_diff的行为?我做错了吗?

1 个答案:

答案 0 :(得分:2)

如@ Rizier123所述,问题是在输入表单时添加了空格。

所以它是用以下方法解决的:

$ arraydiff = array_diff(array_map(“trim”,$ new_urls_exploded),array_map(“trim”,$ old_urls_exploded));

谢谢