2013-08-12 6 views
0

У меня есть файл под названием file.txt и внутри у меня есть этот текст:PHP Выберите случайное второе значение

Text 1 
Vivamus arcu neque, ullamcorper vel eleifend id, euismod viverra nisi. 

Text 2 
Cras posuere neque vitae fringilla lobortis. 

Text 2 
Phasellus eu sapien sit amet diam eleifend ultricies a vitae tellus. 

Text 3 
Nulla at ipsum et quam euismod porttitor sit amet sed odio. 

Я выбираю из этого файла «Text 2» строк и описания по этой линии.

Я хочу выбрать случайную строку «Текст 2» и ее описание не всех из них. Я попытался сломать это, но он показывает мне только первое значение, конечно, и я попытался перетасовать% обрезанных, но это не сработало, как я ожидал.

$trimmed = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

$value = 2; 

foreach ($trimmed as $line) { 

    if ($line == "Text $value") { 
     echo $line."<br>"; 
     echo current($trimmed); 
    } 
} 

Благодаря

+0

Что создает 'file.txt'? Почему не XML? – hjpotter92

+0

Файл.txt сохранит некоторые квесты для игры. Уровень 1 и описание квеста. – Comy

+0

Вы можете использовать другой формат, например JSon. –

ответ

0

Попробуйте это, может быть громоздким:

<?php 

    function get_random_line($number, $file='file.txt'){ 

    $trimmed = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
    $string = "Text $number"; 

    $array = array(); 
    foreach ($trimmed as $key => $line) { 

     if($key % 2 == 0){ 
     $arr_key = $line; 
     if(!array_key_exists($arr_key,$array)){ 
      $array[$arr_key]['total'] = 0; 
     } 
     }else{ 
     $array[$arr_key]['total']++; 
     $array[$arr_key]['rows'][] = $line; 
     }   

    } 
    if(key_exists($string,$array)){ 
     $key = array_rand($array[$string]['rows'],1); 
     return $array[$string]['rows'][$key]; 
    }else 
    { 
     return 'Provide a Valid Key'; 
    } 

    } 


    echo '<pre>'; 
    print_r(get_random_line(3,'file.txt')); // Get Random Lines based on Label Value 
    echo '</pre>'; 

?> 
Смежные вопросы