Come esplodere un array di stringhe e memorizzare i risultati in un altro array (php)

Avere un file di testo in formato:

(400, 530); 6.9; 5.7; 5.0;//------> continues for 100 values. (500, 530); 7.9; 5.1; 5.0; (600, 530); 6.7; 6.7; 7.2; 

Codice:

 <?php $file="./Speed10.asc"; $document=file_get_contents($file); $rows = explode ('(', $document); //splits document into rows foreach ($rows as &$rowvalue) { explode (';', $rowvalue); 

Sto provando a creare un array 2D, dividendolo prima in righe, poi per elemento diviso per ‘;’

Esempio di input:

 $document='(400, 530); 6.9; 5.7; 5.0; ... (500, 530); 7.9; 5.1; 5.0; ... (600, 530); 6.7; 6.7; 7.2; ...'; 

Metodo n. 1 (valori senza punto e virgola memorizzati nell’array):

 foreach(explode("\r\n",$document) as $row){ // split the content by return then newline $result[]=explode("; ",$row); // split each row by semi-colon then space } var_export($result); /* Output: [ ['(400, 530)','6.9','5.7','5.0','...'], ['(500, 530)','7.9','5.1','5.0','...'], ['(600, 530)','6.7','6.7','7.2','...'] ] ) */ 

Metodo # 2 (valori con punto e virgola memorizzati nell’array):

 foreach(explode("\r\n",$document) as $row){ // split the content by return then newline $result[]=preg_split('/(? 

Ecco la demo di entrambi i metodi .

Tieni presente che mi sto concentrando solo sulla divisione delle stringhe all'interno del loop. Il consiglio di Kris sulla gestione dei file è consigliabile.

A seconda dell'ambiente, potrebbe essere necessario regolare la prima esplosione rimuovendo \r o simili.