【问题标题】:PHP get unique paramsPHP获取唯一参数
【发布时间】:2011-06-21 10:14:41
【问题描述】:

我有这个文本文件:

1 - word
1 - trata
2 - love
2 - green
2 - omg
3 - hello

如何解析这个文件以便我得到以下内容?

1 - word, 1 - trata
2 - love, 2 - green, 2 - omg
3 - hello

即同一行上的相同数字。

<?php
    $file = file('1.txt');

    foreach ($file as $dd)
    {
        list ($numb, $word) = explode(' - ', $dd); // That's all (
        //echo $numb . '<br/>';
    }
?>

【问题讨论】:

    标签: php unique


    【解决方案1】:

    类似这样的东西(未经测试):

    $file = file('1.txt');
    $parse = array();
    
    foreach ($file as $dd)
    {
        list ($numb, $word) = explode(' - ', $dd);
        $parse[ $numb ][] = $dd;
    }
    
    foreach( $parse as $line ) {
        echo implode( ', ', $line ).'<br />';
    }
    

    【讨论】:

      【解决方案2】:
      sort($file);
      foreach ($file as $dd)
      {
         list ($numb, $word) = explode(' - ', $dd); // That's all (
         if ($previous != $numb && $previous != null)
         {
             echo "<br>";
         }
         echo $numb ."-".$word ;       
         $previous=$numb;
      }
      

      【讨论】:

      • 您忘记了条目之间的逗号。
      • @Juhana:哦,真是个大错
      • 如果 OP 只想要同一行中的所有条目并且逗号无关紧要,那么这不是一个“大错误”,但如果逗号很重要,我看不到微不足道的(=one-line) 方式将该功能添加到您的解决方案中。
      • 哦,你在开头添加了一个 sort()。太好了,伙计。 “我的代码仅适用于已排序的输入 - 让我们调整输入!”
      • +2?此代码的输出与问题中描述的预期输出相差无几。
      【解决方案3】:
      $lines = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
      $map = array(); // Keys will be your "prefix numbers", values will be the lines from the file.
      
      foreach($lines as $line)
      {
          if(!preg_match('/^(\d+)/', $line, $match))
              continue;
      
          $map[$match[1]][] = $line;
      }
      
      // Now echo the result.
      
      foreach($map as $n => $lines)
      {
          echo implode(', ', $lines), '<br />';
      }
      
      // That's all.
      

      【讨论】:

        【解决方案4】:
        <?php
        $file = file('1.txt');
        $output = array( );
        foreach( $file as $line ) {
            list( $key, $value ) = explode( " - ", $line );
            $output[ $key ][ ] = trim( $value );
        }
        foreach( $output as $key => $values ) {
            foreach( $values as $value ) {
                echo $key . " - " . $value . ", ";
            }
            echo "\n";
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 2013-10-04
          • 2011-01-17
          • 2011-05-16
          • 2012-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多