Вывод всей строки файла csv в php

Мне нужно загрузить файл csv из формы. Что я могу сделать. Файл csv содержит имена и адреса электронной почты людей, принявших участие в конкурсе. Чтобы получить победителей конкурса, мне нужно, чтобы php прочитал файл, рандомизировал строки и распечатал всю строку.

Я пытался использовать следующий код, который я нашел здесь, в stackoverflow, но он выводит только один столбец из случайной строки. Мне нужно, чтобы вывести всю строку, а мне нужно три строки. Что бы я ни пытался, я не могу заставить этот код сделать это:

<?php

if (!isset($_FILES)){exit;}
$file = $_FILES['file'];

$file_handle = fopen($file['tmp_name'], "r");
$line_of_text = array();

while (!feof($file_handle) ) {
    $line_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);

// Random Row and Column
$random_row = array_rand($line_of_text);
$random_column =  array_rand($line_of_text[$random_row]);


//Random row, with all three columns
$column = 1;
$column = 2;
$column = 3;


echo $line_of_text[$random_row][$column-1][$column-2][$column-3];

?>

Если я удаляю столбцы 2 и 3, он печатает столбец 1, но мне нужны все три столбца, вся строка. Я также хочу взять три случайных строки и распечатать каждую строку в строке.


person Dana Nourie    schedule 13.03.2013    source источник


Ответы (2)


$line_of_text[$random_row] в данном случае это массив. Предполагая, что я правильно понимаю его структуру, вы можете легко получить все три столбца, выполнив следующие действия:

echo $line_of_text[$random_row][$column-1] . $line_of_text[$random_row][$column-2] . $line_of_text[$random_row][$column-3];

Это объединит значения трех значений массива вместе. Если вы хотите разделить их пробелами, просто замените . на . ' ' . или что-то подобное.

person Daedalus    schedule 13.03.2013
comment
Но, не видя структуры массива, я снимаю здесь в темноте... так что, если можно, пожалуйста, print_r() массив $line_of_text[$random_row], чтобы я мог видеть его структуру. - person Daedalus; 13.03.2013

Спасибо, конкатенация сработала! По какой-то причине мне пришлось изменить порядок столбца 3, затем 2, затем один. Но это дает мне результаты, которые я хочу.

person Dana Nourie    schedule 02.04.2013