【问题标题】:Sorting strings, in a function, is my logic faulty or?在函数中对字符串进行排序是我的逻辑错误还是?
【发布时间】:2013-03-17 17:24:53
【问题描述】:

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

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

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

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

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

我不知道它们返回的顺序,NowDownload.Eu,可能是 $code_link[4] 或 $code_link [3],但 name 数组会按顺序匹配。

现在,我需要 $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();

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

【问题讨论】:

  • 我仍然不清楚这个问题。您能否向我们展示您在典型数组中的数据,以及您希望这些数据如何排序?
  • $name_link[0] 可能包含 'NowDownload.eu' $code_link[0] 将包含属于 'Nowdownload.eu' 的链接 但是,NowDownload.eu 不一定在 $ 中name_link[0] 它可能在 $name_link[4] 中,但 $code_link[4] 仍然是属于 $name_link[4] 的链接,并且带有字符串 NowDownload.eu 的 $code_link 必须变为 $link1跨度>
  • 这有意义吗?

标签: php string


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2018-01-10
    • 1970-01-01
    • 2023-01-14
    • 2012-07-05
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多