在函数中对字符串排序,是我的逻辑错误还是


Sorting strings, in a function, is my logic faulty or?

我需要对一些字符串进行排序,并将它们与链接匹配,这就是我所做的:

$name_link = $dom->find('div[class=link] strong');

返回数组[0]-[5],其中包含字符串,如NowDownload.eu

$code_link = $dom->find('div[class=link] code');

返回0-5之间匹配的链接,如link[0]属于名称[0]

我不知道它们返回的顺序,NowDownload。Eu,可以是$code_link[4]或$code_link[3],但名称数组将按顺序匹配。

现在,我需要$code_link[4]//我们说它是NowDownload。Eu每次变为$link1

所以我写入

$i = 0;
while (!empty($code_link[$i]))
   SortLinks($name_link, $code_link, $i);  // pass all links and names to function, and counter
   $i++;
}
function SortLinks($name_link, $code_link, &$i) { // counter is passed by reference since it has to increase after the function
   $string = $name_link[$i]->plaintext; // name_link is saved as string
   $string = serialize($string); // They are returned in a odd format, not searcheble unless i serialize
   if (strpos($string, 'NowDownload.eu')) { // if string contains NowDownload.eu
       $link1 = $code_link[$i]->plaintext; 
       $link1 = html_entity_decode($link1); 
       return $link1; // return link1
   }
   elseif (strpos($string, 'Fileswap')) {
       $link2 = $code_link[$i]->plaintext; 
       $link2 = html_entity_decode($link2);
       return $link2;
   }
   elseif (strpos($string, 'Mirrorcreator')) {
       $link3 = $code_link[$i]->plaintext;
       $link3 = html_entity_decode($link3);
       return $link3;
   }
   elseif (strpos($string, 'Uploaded')) {
       $link4 = $code_link[$i]->plaintext;
       $link4 = html_entity_decode($link4);
       return $link4;
   }
   elseif (strpos($string, 'Ziddu')) {
       $link5 = $code_link[$i]->plaintext;
       $link5 = html_entity_decode($link5);
       return $link5;
   }
   elseif (strpos($string, 'ZippyShare')) {
       $link6 = $code_link[$i]->plaintext;
       $link6 = html_entity_decode($link6);
       return $link6;
   }
}

echo $link1 . '<br>';
echo $link2 . '<br>';
echo $link3 . '<br>';
echo $link4 . '<br>';
echo $link5 . '<br>';
echo $link6 . '<br>';
die();

我知道他们找到了链接,我之前已经测试过了,但我想让它成为一个函数,它搞砸了,是我的逻辑错误还是我传递变量/数组的方式有问题?

我不知道你为什么传递$i作为参考,因为你只是为了阅读它而使用它。您可以返回一个包含命名链接的数组,并像这样使用它:

$all_links = SortLinks($name_link,$code_link);
echo $all_links['link1'].'<br/>';
echo $all_links['link2'].'<br/>';

必须将循环放在函数内部,而不是外部。