0

我有两个数组,一个包含大量 URL 路径,另一个包含搜索 ID。每个 URL 路径都有一个共同的唯一 ID。通过搜索 ID,我们需要找到具有唯一 ID 的最长 URL。这是我的代码,稍后我会解释更多。

<?php

       function searchstring($search, $array) {

         foreach($array as $key => $value)  {

            if (stristr($value, $search))  {

    echo $value;

    }
        }
       return false;
      }
 $array = array(
 "D:\winwamp\www\info\961507\Good_Luck_Charlie",
 "D:\winwamp\www\info\961507\Good_Luck_Charlie\season_1",
 "D:\winwamp\www\info\961507\Good_Luck_Charlie\season_1\episode_3",
 "D:\winwamp\www\info\961507\Good_Luck_Charlie\season_1\episode_3\The_Curious_Case_of_Mr._Dabney",
 "D:\winwamp\www\info\961506\Good_Luck_Charl",
 "D:\winwamp\www\info\961506\Good_Luck_Charlie\season_1",
 "D:\winwamp\www\info\961506\Good_Luck_Charlie\season_1\episode_1",
 "D:\winwamp\www\info\961506\Good_Luck_Charlie\season_1\episode_1\Study_Date");

 $searchValues = array("961507","961506");

 foreach($searchValues as $searchValue) {

  $result = searchstring($searchValue, $array);
 }
?>

这给出了所有匹配 ID 的值。现在,如果您看到我的数组,则有四组 URL 路径。我想要的是,如果我用“961507”搜索它应该给出:

 "D:\winwamp\www\info\961507\Good_Luck_Charlie\season_1\episode_3\The_Curious_Case_of_Mr._Dabney"

如果我用“961506”搜索,它应该给出:

"D:\winwamp\www\info\961506\Good_Luck_Charlie\season_1\episode_1\Study_Date" 

现在我得到的是与我搜索的 ID 匹配的所有数组。你能帮我看看我怎么能做到这一点吗?因为我有 98000 多个 URL 需要整理。

4

1 回答 1

1

将函数更改为

function searchstring($search, $array) {
    $length = 0;
    $result = "";
     foreach($array as $key => $value)  {

        if (stristr($value, $search))  {
            if($length < strlen($value)) {
                $length = strlen($value);
                $result = $value;
            }
        }
    }
    return $result;
}

要打印值使用:

foreach($searchValues as $searchValue) {

  $result = searchstring($searchValue, $array);

  echo $result;

}

或者

$result = array();
foreach($searchValues as $searchValue) {

  $result[] = searchstring($searchValue, $array);

}

print_r($result);
于 2013-09-10T16:41:56.070 回答