get — взять специальные строки из базы данных txt Переполнение стека

У меня есть текстовая база данных

0,Apple,Green
1,Banana,Yellow
2,Cherry,Red

и когда я звоню getdata.php?row=2 Мне нужно получить данные, которые 2,cherry,red

Я бакалавр в PHP, и у меня есть только один пример,
пожалуйста, помогите мне в этой проблеме.
Спасибо

$file_handle = fopen("./news.txt", "rb");
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle);
$parts = explode(',', $line_of_text);
print $parts[0] . $parts[1] . $parts[2];
}
fclose($file_handle);

0

Решение

Это будет работать, а также прекратит чтение, как только найдет правильную строку (в отличие от других ответов, которые читают весь файл независимо от того, что)

    if (isset($_GET['row']))
{
$file_handle = fopen("./news.txt", "rb");
$i = 0;
while (!feof($file_handle))
{
if ($i == $_GET['row'])
{
$line_of_text = fgets($file_handle);
$parts = explode(',', $line_of_text);
print $parts[0] . $parts[1] . $parts[2];
break;
}
$i++;
}
fclose($file_handle);
}
0

Другие решения

Сначала вы должны взорваться по правилу с explode("/n", $txt) чем у вас массив каждого правила. После того, как вы сохранили это разнесение в переменную, вам нужно снова разорвать определенное значение, ,,

0

Простой способ сделать это: если запись № 2 всегда находится на строке № 3.

if (!isset($_GET['row']) || !is_int($_GET['row'])) {
echo "please supply a row number";
die;
}

$lines = file('news.txt');

// assumes record number 2 is on line 3
$row = $_GET['row'] + 1;

$parts = explode(',', $lines[$row]);
print $parts[0] . $parts[1] . $parts[2];

Если запись № 2 не гарантируется в строке 3

$row = $_GET['row'];
foreach ($lines as $line) {
if (strpos($line, $row) === 0) {
$parts = explode(',', $lines[$row]);
print $parts[0] . $parts[1] . $parts[2];
break;
}
}

Если файл очень большой, вы можете читать построчно из буфера.

$row = $_GET['row'];
if ($fp = fopen('news.txt', 'r')) {
while ($line = fgets($fp)) {
if (strpos($line, $row) === 0) {
$parts = explode(',', $line);
print $parts[0] . $parts[1] . $parts[2];
break;
}
}
fclose($fp);
}
0
По вопросам рекламы [email protected]