数组搜索问题

时间:2011-03-24 19:28:07

标签: php arrays search key

$comedy = 'comedy, drama, thriller, action';

$array = array('action', 'fantasy', 'war', 'comedy', 'romance', 'drama', 'thriller');

我需要找到每个变量$comedy中的关键词。

我需要:

3
5
6
0

谢谢!

4 个答案:

答案 0 :(得分:3)

以下代码部分如何:

$comedy = 'comedy, drama, thriller, action';
$array = array('action', 'fantasy', 'war', 'comedy', 'romance', 'drama', 'thriller');

foreach (explode(', ', $comedy) as $word) {
    $index = array_search($word, $array);
    var_dump($index);
}

这给了我以下输出:

int 3
int 5
int 6
int 0


基本上:

  • 由于$comedy变量中的单词始终使用相同的模式', '分隔,您可以使用explode()来获取包含这些单词的数组。
  • 然后,迭代这些字词,您只需致电array_search()即可获得$array数组中的位置。

答案 1 :(得分:1)

$comedy = 'comedy, drama, thriller, action';

$array = array('action', 'fantasy', 'war', 'comedy', 'romance', 'drama', 'thriller');

$tags = explode(', ', $comedy);

foreach ($tags as $tag)
{
    echo array_search($tag, $array) . "\n";
}

这应该这样做。

答案 2 :(得分:0)

您可以轻松找到(并打印)您想要的每个索引:

foreach (explode(', ', $comedy) as $keyword) {
    echo array_find($keyword, $array);
}

如果要将每个关键字与索引相关联,可以这样做:

$words = explode(', ', $comedy);
$indexes = array_map(
             $words, 
             function($word) use ($array) { return array_find($keyword, $array); } 
$assoc = array_combine($words, $indexes);

print_r($assoc);

对于匿名函数,上面要求PHP> = 5.3。

答案 3 :(得分:0)

为什么喜剧只是一个字符串?

我也会把喜剧作为一个数组,然后制作一个循环,根据数组中的每个值检查喜剧中的每个值。