Консультация № 188755
31.01.2016, 16:43
0.00 руб.
0 3 1
Здравствуйте! Прошу помощи в следующем вопросе:
Как мне на php сделать следующее:

Есть файл txt структура файла такая:

1,1,1,1,1,1,1 // 1 строка
1,2,3,4,2,1,1 // 2 строка
2,3,4,5,6,7,8 // 3 строка
// и так далее


грузим массив из файла

$data_a= file('abc.txt', FILE_IGNORE_NEW_LINES); // массив в файле

for( $i=0; $i < count($data_a); ++$i ) {

// тут в $data_a [0] первая строка и так далее.

$data = explode (";",$data_a[i]); // а тут в массиве $data уже столбцы например $data[2]=3;

Пожалуйста подскажите как дальше сделать так чтобы в итоге получить двумерный массив вида

$data_end[$i][$y] где $i- порядковый номер строки, а $y это номер столбца.

т.е. чтобы далее я смог иметь доступ к каждой ячейке столбца,
скажем в цикле $столбец 4= $data[$i][3]

Обсуждение

давно
Посетитель
398732
9
31.01.2016, 17:19
общий
это ответ
Здравствуйте, bars.66!

Решение Вашего вопроса состоит в том, чтобы в цикле по строкам, каждую строку с помощью функции explode разбить по знаку запятой, а затем в готовый двумерный массив сложить все значения.

Следует только учитывать, что в php нумерация начинается с нуля, поэтому $a[0][0] на самом деле означает "первый столбец, первая строка".



Приложение:
<?php
$strings = file("abc.txt"); //выводим файл в массив
$str_count = count($strings); //считаем кол-во строк

$final = array(); //здесь у нас будут храниться готовые значения
for ($i = 0; $i < $str_count; $i++) { //проходимся по строкам
$cur_string = explode(",", $strings[$i]); //каждую из которых разбиваем по запятой
for ($j = 0; $j < count($cur_string); $j++) { //проходимся по каждой из строк
$final[$i][$j] = $cur_string[$j]; //и складываем получившиеся значения в двумерный, заранее инициализированный массив
}
}
?>
5
давно
Посетитель
399473
9
31.01.2016, 17:25
общий
Большое спасибо!!!
давно
Посетитель
398931
6
31.01.2016, 17:49
общий
в принципе можно и от нулей избавиться

for ($i = 1; $i <= $str_count; $i++) { //проходимся по строкам

for ($j = 1; $j <= count($cur_string); $j++) { //проходимся по каждой из строк
Форма ответа