我正在尝试将字符串与数组进行比较,以查看字符串是否存在于数组中,如果是,则在数组中使用echo'。我只能按照我想要的方式使用数组中的最后一个条目。
foreach($array as $key => $value) {
foreach($entries as $entry) {
if($entry == $value) echo 'in array 1';
}
if (in_array($value, $entries)) {
echo 'in array 2';
}
if(isset($entries[$value])) {
echo 'in array 3';
}
}
'数组1'和'数组2'中的回显仅适用于$ entries数组中最后一个条目的内容,而'数组3'中的回显根本不起作用。
它可能是愚蠢的但我没有看到它......
编辑:
这是一些数组的例子
$entries =
array(5) {
[0]=>
string(14) "example text 1"
[1]=>
string(14) "example text 2"
[2]=>
string(14) "example text 3"
[3]=>
string(14) "example text 4"
[4]=>
string(14) "example text 5"
}
$array =
array(5) {
[0]=>
string(14) "example text 1"
[1]=>
string(14) "example text 2"
[2]=>
string(14) "example text 3"
[3]=>
string(14) "example text 7"
[4]=>
string(14) "example text 8"
}
所以现在我做的时候
foreach($array as $key => $value)
$ value应该包含my $数组中的值,我需要比较这些值中的每一个,看看它们是否存在于我的$ entries数组中。如果是这样的话就像在数组中回应'
编辑2:
如果它有所不同,我的$ entries数组是由file()创建的,因为信息来自日志。每次添加新文件时,都会记录,然后我想将传入的文件与日志进行比较,确定它们是否已经添加,如果没有,则添加它们。
答案 0 :(得分:2)
您的代码似乎只检查两个数组中的共同点,并以三种不同的方式执行。一个人将在另一个人工作的原因取决于数据。比较器==
,in_array
和isset
的工作方式不同。真的需要看到你的数组结构/样本数据进一步评论。
但是,使用array_diff()
或array_intersect()
你的第一行 -
只需拨打我正在尝试将字符串与数组进行比较,以查看字符串是否为 存在于数组中,如果是,则在数组中回显。
in_array
一次就可以实现,例如in_array('cat', array('cat', 'dog', 'mouse'));
答案 1 :(得分:1)
$value
不是关键。
价值是“价值”。
如果你真的想要做你正在做的事情,你可以这样做:
if(isset(array_flip($entries)[$value])) {
echo 'in array 3';
}
但如果您有多个具有相同值的元素,它可能无效。