2012-11-14 53 views
0

我想将一个字符串与数组进行比较,以查看字符串是否存在于数组中,如果是这样,则echo'in array'。我只能保持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”的工作只在无论$项数组中的最后一个条目,和回声“在阵列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) 

$值应该有我的$数组的值,我需要比较每一个thos e值来查看它们是否出现在我的$ entries数组中。如果是这样的ID喜欢“阵”呼应

编辑2:

,如果它使正在被文件(),因为信息是从日志来创建我的$条目阵列的差异。每次添加一个新文件时,它都会被记录下来,然后我想将传入文件与日志进行比较,确定它们是否已经被添加,如果没有,添加它们。

+0

我很困惑,你说你要比较一个字符串数组,但它看起来像你比较数组一个数组..你能提供一些样本数据在所有这些数组/字符串,你得到了什么,你期待什么? – gingerCodeNinja

+0

well $ value是一个存储在数组中的字符串,通过循环$ array获取每个$ value,然后将$ value与$ entries中的每个值进行比较($ entry) – cwal

+0

,这样您的字符串的每个字符都是$ value?像'猫'是阵列('c','a','t');'?还是你的意思是字符串中的每个单词都是$ value?像'猫坐在垫子上'是'数组'('猫','坐','上',''','垫子');'?什么是$条目? – gingerCodeNinja

回答

1

$value不是关键。

值是一个“值”。

,如果你真的想做的事,你在做什么,你可以这样做:

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

但是,如果你有相同的值几个元素可能无法正常工作。

See DOCs

+0

都将是唯一的 – cwal

+1

那么我的前两个变体怎么才能在最后一个条目上工作呢? – cwal

2

你的代码似乎只是检查什么是常见的两个数组中,并执行它三种不同的方式。一个人处理另一个人的原因取决于数据。那里的比较器==,in_arrayisset的工作方式不同。真的需要看到你的数组结构/样本数据进一步评论。

但是,你目前在做什么,找出两个数组的共同元素,可以很容易地与array_diff()array_intersect()

你的第一行 -

我想比较字符串用数组来查看数组中是否存在字符串 ,如果是这样,则echo'in array'。

正好可以只用一个调用in_array实现,像in_array('cat', array('cat', 'dog', 'mouse'));

+0

3种不同的方式进行测试,我不能得到我的任何工作方式。 – cwal

+0

增加了示例数组 – cwal