比较php数组中的字符串元素

时间:2018-09-22 14:14:05

标签: php arrays

我将在一个简单的示例中解释我的问题。我有1个数组。

$array1 =  array( "Sun" => "1", "Lake Red" => "1", "Tree" => "1" )

我只有一个字

$word = "Lake";

我想检查这些单词是否在此数组中。我是这样做的。

if (isset($array1[$word])) {
    print "This word is in the array.\n\n";
}

我已经拥有的这段代码对我来说做得不好,因为对于程序字LAKE与LAKE RED是不同的...我该如何解决这些问题,所以如果其中一个元素至少有一个单词中的单词,那么应该这样写:

print "This word is in the array.\n\n";

6 个答案:

答案 0 :(得分:1)

您可以使用in_array来检查与搜索相同的值。例如

$array1 = array("Lake Red", "Sun", "Tree"); //note the " around Lake Red
$word = "Lake";`

if (in_array($word,$array1)) 
{
    print "This word is in the array.\n\n";
}

通过if (isset($array1[$word]))进行检查将需要您实现以下数组,并且它将查找与搜索相同相同的键

$array = array(
   "Lake" => "Red",
   "Lake Red" => "1",
   "Boo" => "Foo"
);

或者如果您想在关联数组的键中搜索单词

$keys = array_keys($array);
for($i=0,$count = count($keys);$i<$count;$i++) {
    if (strpos($word, $keys[$i]) !== false) {
        print "This word is in the array.\n\n";
        break;
    }
}

或带有foreach

foreach($keys as $key) {
    if (strpos($word, $key) !== false) {
        print "This word is in the array.\n\n";
        break;
    }
}

但是,使用for循环可以更快,更优化。使用implode可能会导致大型数组的内存问题。但是如果我们要这样做,这就是方法。

$keys = array_keys($array);
$long_str = implode(" ",$keys);
if (strpos($word, $long_str) !== false) {
    print "This word is in the array.\n\n";
    break;
}

答案 1 :(得分:0)

  • 使用implode()函数获取数组中的各种值,并附加到由空格(" ")分隔的单个字符串中。
  • 现在,使用strpos()函数,只需检查上一步获得的组合字符串中的$word子字符串。

尝试以下操作:

// Get all array elements concatenated as a string
$array1 = array("Lake Red", "Sun", "Tree");
$array1_str = implode(" ", $array1);

// use strpos to check if the $word exists
$word = "Lake";
if (strpos($array1_str, $word) !== false) {
    print "This word is in the array.\n\n";
}

答案 2 :(得分:0)

$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}

嗨,我建议您使用类似的东西

答案 3 :(得分:0)

使用foreach遍历数组,然后将每个值与$ word比较

$array1 = array(Lake Red, "Sun", "Tree");
$word = "Lake"
foreach($array1 as $w){
if($w==$word){
 print "This word is in the array.\n\n";
}

答案 4 :(得分:0)

我认为使用内爆是某人之前回答过的最佳解决方案。无论如何,我做了这个功能,它也可以工作:

sleep()

答案 5 :(得分:0)

如先前的回答Madhur Bhaiya,您需要获取字符串数组的键并找到字符串中的单词。我添加了小写的字符串并搜索了不区分大小写的单词:

$array1 =  array( "Sun" => "1", "Lake Red" => "1", "Tree" => "1" );
$array1_str = implode(" ", array_keys($array1));
$word = "Lake";
if (strpos(strtolower($array1_str), strtolower($word)) !== false) {
    print "This word is in the array.\n\n";
}