我将在一个简单的示例中解释我的问题。我有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";
答案 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)
尝试以下操作:
// 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";
}