PHP разбивает массив каждый раз, когда указанное значение появляется в отдельных массивахPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP разбивает массив каждый раз, когда указанное значение появляется в отдельных массивах

Сообщение 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] =>
)
)

)


Подробнее здесь: https://stackoverflow.com/questions/512 ... ate-arrays
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»