PHP获取唯一参数

PHP获取唯一参数,php,unique,Php,Unique,我有这个文本文件: 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

我有这个文本文件:

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/>';
    }
?>
类似这样的东西(未测试):

$file=file('1.txt');
$parse=array();
foreach($dd文件)
{
列表($numb,$word)=分解('-',$dd);
$parse[$numb][]=$dd;
}
foreach($parse as$line){
回波内爆(“,”,$line)。“
”; }
排序($file);
foreach($dd文件)
{
list($numb,$word)=分解('-',$dd);//仅此而已(
如果($previous!=$numb&&$previous!=null)
{
回声“
”; } 回声$numb.“-”$word; $previous=$numb; }
$lines=file('test.txt',file_IGNORE_NEW_line | file_SKIP_EMPTY_line);
$map=array();//键将是您的“前缀号”,值将是文件中的行。
foreach($line作为$line)
{
如果(!preg_match('/^(\d+/'),$line,$match))
继续;
$map[$match[1]][]=$line;
}
//现在回应结果。
foreach($n=>$line映射)
{
回波内爆(“,”,$lines),“
”; } //就这些。
您忘记了条目之间的逗号。@Juhana:哦,真是一个大错误。如果OP只是希望所有条目都在同一行中,而逗号并不重要,那么这不是一个“大错误”,但是如果逗号很重要,我看不到一个简单的(=一行)方法可以将该功能添加到您的解决方案中。哦,您添加了一个排序()开始的时候。太好了,伙计。“我的代码只适用于排序输入-让我们调整输入!”+2?这段代码的输出与问题中描述的预期输出相差甚远。
$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 />';
}
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;
}
$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.
<?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";
}