У меня есть массив PHP, собранный из CSV-файла.
Затем я удалил заголовок, и теперь у меня остался этот массив
и хотим разбить/ разбить массив для каждого появления TRANS
так что для каждого [0] => TRANS у нас будет новый массив.
Я пробовал использовать фрагмент массива
foreach (array_chunk($data, 9, true) as $row) {
$data2[] = $row;
}
но линия TRANS не всегда является девятым пунктом
будем очень благодарны за любую помощь
Спасибо
Ant
это мой массив
Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[9] => Array
(
[0] => TRANS
[1] => 139
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
Приведенный выше массив продолжается по тому же шаблону, начиная с TRANS
Это код, используемый до сих пор
function csv_to_array($filename='', $delimiter=',')
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
$data[] = $row;
}
fclose($handle);
}
return $data;
}
$data = csv_to_array('test.csv');
echo'EXTRACTED HEADER';
$header = $data['0'];
echo '
';
print_r($header);
echo '';
echo'DATA';
array_shift($data);
array_pop($data);
echo '';
print_r($data);
echo '';
Выход будет таким...
Array
(
[0] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
[1] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
[2] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
)
Подробнее здесь: https://stackoverflow.com/questions/512 ... ate-arrays
PHP разбивает массив каждый раз, когда указанное значение появляется в отдельных массивах ⇐ Php
Кемеровские программисты php общаются здесь
1730451373
Anonymous
У меня есть массив PHP, собранный из CSV-файла.
Затем я удалил заголовок, и теперь у меня остался этот массив
и хотим разбить/ разбить массив для каждого появления TRANS
так что для каждого [0] => TRANS у нас будет новый массив.
Я пробовал использовать фрагмент массива
foreach (array_chunk($data, 9, true) as $row) {
$data2[] = $row;
}
но линия TRANS не всегда является девятым пунктом
будем очень благодарны за любую помощь
Спасибо
Ant
это мой массив
Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[9] => Array
(
[0] => TRANS
[1] => 139
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
Приведенный выше массив продолжается по тому же шаблону, начиная с TRANS
Это код, используемый до сих пор
function csv_to_array($filename='', $delimiter=',')
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
$data[] = $row;
}
fclose($handle);
}
return $data;
}
$data = csv_to_array('test.csv');
echo'EXTRACTED HEADER';
$header = $data['0'];
echo '
';
print_r($header);
echo '';
echo'DATA';
array_shift($data);
array_pop($data);
echo '';
print_r($data);
echo '';
Выход будет таким...
Array
(
[0] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
[1] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
[2] => Array
(
[0] => Array
(
[0] => TRANS
[1] => 138
[2] =>
[3] => 10008710
[4] => APPNT
[5] => COS
[6] =>
[7] =>
[8] =>
[9] =>
[10] => D
[11] =>
[12] =>
[13] =>
[14] => 20180516
)
[1] => Array
(
[0] => MTPNT
[1] =>
[2] => 2477540807
[3] => F
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] => 20170925
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[2] => Array
(
[0] => ADDRS
[1] => MTRPT
[2] =>
[3] =>
[4] => 1
[5] =>
[6] => DATA
[7] =>
[8] =>
[9] => DATA
[10] => DATA
[11] => DATA
[12] =>
[13] =>
[14] =>
)
[3] => Array
(
[0] => ASSET
[1] =>
[2] => APPNT
[3] => METER
[4] =>
[5] =>
[6] => E6VG470
[7] => LPG
[8] => 2017
[9] => E6S01910141760
[10] => 0
[11] =>
[12] => LI
[13] =>
[14] =>
)
[4] => Array
(
[0] => METER
[1] =>
[2] => U
[3] => S1
[4] =>
[5] =>
[6] =>
[7] =>
[8] => S
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[5] => Array
(
[0] => REGST
[1] =>
[2] => METER
[3] => 5
[4] => SCMH
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[6] => Array
(
[0] => MKPRT
[1] => MAM
[2] => MPS
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[7] => Array
(
[0] => NAME
[1] => CONT
[2] => Mrs
[3] => M
[4] => CARTER
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
[8] => Array
(
[0] => CONTM
[1] => TEL
[2] => 345345345
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
)
)
Подробнее здесь: [url]https://stackoverflow.com/questions/51262437/php-break-array-each-time-the-a-specified-value-appears-into-separate-arrays[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия