У меня есть текстовая база данных
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);
Это будет работать, а также прекратит чтение, как только найдет правильную строку (в отличие от других ответов, которые читают весь файл независимо от того, что)
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);
}
Сначала вы должны взорваться по правилу с explode("/n", $txt)
чем у вас массив каждого правила. После того, как вы сохранили это разнесение в переменную, вам нужно снова разорвать определенное значение, ,
,
Простой способ сделать это: если запись № 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);
}