0

我正在尝试将字符串与数组进行比较,以查看字符串是否存在于数组中,如果存在则回显“在数组中”。对于数组中的最后一个条目,我只能按照我的意愿进行回声工作。

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';
    }
}

'in array 1' 和 'in array 2' 的 echo 仅适用于 $entries 数组中的最后一个条目,而'in array 3' 的 echo 根本不起作用。

它可能是愚蠢的,但我没有看到它......

编辑:

这是数组的一些示例

$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 应该具有我的 $array 中的值,我需要比较这些值中的每一个以查看它们是否存在于我的 $entries 数组中。如果是这样,我想回显“数组中”

编辑2:

如果它有所不同,我的 $entries 数组是由 file() 创建的,因为信息来自日志。每次添加新文件时,都会记录它,然后我想将传入的文件与日志进行比较,确定它们是否已经添加,如果没有,添加它们。

4

2 回答 2

2

您的代码似乎只是检查两个数组中的共同点,并以三种不同的方式进行。一个人会在另一个人身上工作的原因取决于数据。那里的比较器==in_array并且isset工作方式不同。确实需要查看您的数组结构/示例数据才能进一步评论。

但是,您目前正在做的事情,找到两个数组的共同元素,可以很容易地用array_diff()orarray_intersect()

你的第一行 -

我正在尝试将字符串与数组进行比较,以查看字符串是否存在于数组中,如果存在则回显“在数组中”。

只需一次调用即可实现in_array,例如in_array('cat', array('cat', 'dog', 'mouse'));

于 2012-11-14T18:29:02.127 回答
1

$value不是钥匙。

价值是一个“价值”。

如果你真的想做你正在做的事情,你可以这样做:

if(isset(array_flip($entries)[$value])) {
    echo 'in array 3';
}

但是,如果您有多个具有相同值的元素,它可能不起作用。

见文档

于 2012-11-14T17:29:18.603 回答