【发布时间】:2011-03-24 19:28:06
【问题描述】:
$comedy = 'comedy, drama, thriller, action';
$array = array('action', 'fantasy', 'war', 'comedy', 'romance', 'drama', 'thriller');
我需要从每个变量$comedy中找到关键词。
我需要:
3
5
6
0
谢谢!
【问题讨论】:
$comedy = 'comedy, drama, thriller, action';
$array = array('action', 'fantasy', 'war', 'comedy', 'romance', 'drama', 'thriller');
我需要从每个变量$comedy中找到关键词。
我需要:
3
5
6
0
谢谢!
【问题讨论】:
以下代码部分如何:
$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 数组中的位置。【讨论】:
$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";
}
应该这样做。
【讨论】:
您可以轻松找到(并打印)您想要的每个索引:
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。
【讨论】:
为什么喜剧只是一个字符串?
我也会将喜剧片设为一个数组,然后创建一个循环,将喜剧片中的每个值与数组中的每个值进行对比。
【讨论】: