【问题标题】:Array search problem数组搜索问题
【发布时间】: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

谢谢!

【问题讨论】:

    标签: php arrays search key


    【解决方案1】:

    以下代码部分如何:

    $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 数组中的位置。

    【讨论】:

      【解决方案2】:
      $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";
      }
      

      应该这样做。

      【讨论】:

        【解决方案3】:

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

        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。

        【讨论】:

          【解决方案4】:

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

          我也会将喜剧片设为一个数组,然后创建一个循环,将喜剧片中的每个值与数组中的每个值进行对比。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-11
            • 2018-05-05
            • 1970-01-01
            • 2012-01-28
            • 2011-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多