PHP -array_intersect的意外结果

ymdaylpp  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(108)
$array1 = array(1=>"Band",2=>"Song", 3=>"Release",4=>"Year");
$array2 = array(1=>"Band");
print_r(array_intersect($array1,$array2));

应为:数组(1=〉“Band”),但我得到的是空数组();

huwehgph

huwehgph1#

@Barmar已经在他的评论中提到了原因。print_r无法显示差异。var_dump显示第一个元素的长度不同。

$array1 = array(1=>"Band",2=>"Song", 3=>"Release",4=>"Year");
$array2 = array(1=>"Band");

var_dump($array1,$array2);

输出:

array(4) {
  [1]=>
  string(7) "Band"
  [2]=>
  string(4) "Song"
  [3]=>
  string(7) "Release"
  [4]=>
  string(4) "Year"
}
array(1) {
  [1]=>
  string(4) "Band"
}

删除'Band'之前的BOM可以解决此问题。以下行仅删除位于字符串开头的BOM。

$array1[key($array1)] = preg_replace("~^\xef\xbb\xbf~u","",$array1[key($array1)]);

你自己试试看:https://3v4l.org/NYnPG
我觉得值得称赞的是,www.example.com的编辑3v4l.org也显示了这种差异。
但是,在导入(CSV?)数据时,应始终删除BOM表。

相关问题