2016-06-11 4 views
0

Я хочу преобразовать ввод текстового файла в массив в PHP.Преобразование ввода текстового файла в массив в PHP

Вот мой текст пример файла ввода:

Name:abc 
Age: 50 
Address: 
     Postal:123 
      City:and 
DOB:1/5/1996 

массив в PHP должен быть (выход):

[name]->ABC 
[AGE]->50 
[ADDRESS][POSTAL]->123 
[Address][city]=and 
[DOB]=1/5/1996 
[DOB][time]->8:20 

или

Array(1) 
[Name]=>ABC 
[Age]=>50 
[Address]==> Array(2) 
          [City]=>and 
Array(1) 
[DOB]=>1/5/1996 
       Array(2) 
        [Time]=>8:20 

У меня действительно нет никакой подсказки. Пожалуйста, помогите мне получить желаемый результат. PHP-код для реализации этого.

Большое спасибо.

+3

И где вы застряли? – Rizier123

+0

Просьба указать действительный код php –

+0

@HoloHokkaido - сделано. Пожалуйста, смотрите. – Emily

ответ

0

Это будет работать для вас (как это он работает добавлен как комментарий): -.

<?php 

define('CHARS',4); //constant to remind yaml spec for number of spaces. 

$input = "Name:abc 
Age: 50 
Address: 
     Postal:123 
      City:and 
DOB:1/5/1996"; 

$inarray = explode("\n",$input); // explode with new line 
echo "<pre/>";print_r($inarray); // print array 
$final_array = array(); // create final empty array 
$child_array = ''; // an empty variable 
foreach ($inarray as $key=>$inarra){ // loop iteration 
    $identSize = strlen($inarra)-strlen(ltrim($inarra)); // check that original value have any spaces at thhe begning or not? 
    $explode_data = explode(':',$inarra); // explode with : 
    if($identSize == 0){ // if original string have no spaces at the begning 
     $child_array = trim($explode_data[0]); // asssign its first value to newely created variable 
     $final_array[trim($explode_data[0])] = trim($explode_data[1]); // add key value pair to final array 
    }else{ 
     $final_array[$child_array][trim($explode_data[0])] = trim($explode_data[1]); // add key value pair as an subarray to the prevously created index which have no space at the begning 
    } 
} 
echo "<pre/>";print_r($final_array); 
?> 

Выход: - https://eval.in/587362

0

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

<?php 
$input = "Name:abc 
Age: 50 
Address: 
     Postal:123 
     City:and 
DOB:1/5/1996"; 

$values = []; 
$parent_key = ''; 
foreach (explode("\n", $input) as $line) { 
    list($key, $value) = explode(":", $line); 
    if ($key[0] == ' ') 
    $values[trim($parent_key)][trim($key)] = $value; 
    else { 
    $parent_key = $key; 
    $values[trim($key)] = $value; 
    } 
} 

print_r($values); 
?> 
Смежные вопросы