检查数组中是否存在值

时间:2012-11-14 17:28:02

标签: php arrays

我正在尝试将字符串与数组进行比较,以查看字符串是否存在于数组中,如果是,则在数组中使用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()创建的,因为信息来自日志。每次添加新文件时,都会记录,然后我想将传入的文件与日志进行比较,确定它们是否已经添加,如果没有,则添加它们。

2 个答案:

答案 0 :(得分:2)

您的代码似乎只检查两个数组中的共同点,并以三种不同的方式执行。一个人将在另一个人工作的原因取决于数据。比较器==in_arrayisset的工作方式不同。真的需要看到你的数组结构/样本数据进一步评论。

但是,使用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';
}

但如果您有多个具有相同值的元素,它可能无效。

See DOCs