Многомерный взрыв (); строка разделенных табуляцией ключей последовательного массива - PullRequest
0 голосов
/ 26 мая 2011

Я работаю с представлением в Drupal и получил строку, подобную следующей:

Room:  Bedroom Length:  5.00 Width:  5.00 Area:  25.00 Room:  Bathroom Length:  3.00 Width:  3.00 Area:  9.00 

Это для двух "комнатных" объектов, каждый из которых имеет длину, ширину и площадь.

Как бы я разбил это в многомерный массив, как показано ниже:

array( [0] => array( [room] => "Bedroom" [length] => "5.00" [width] => "5.00" [area] => "25.00")
       [1] => array( [room] => "Bathroom" [length] => "3.00" [width] => "3.00" [area] => "9.00"))

1 Ответ

0 голосов
/ 26 мая 2011

Как вы знаете, первым шагом было бы поместить строку в переменную, чтобы иметь возможность играть с ней.Затем вы разбили бы строку на «Комната», но я продолжу этот пример, как если бы у каждого $ spec было 2 комнаты.

//need the string in a variable ....  
$specs = "Room:  Bedroom Length:  5.00 Width:  5.00 Area:  25.00 Room:  Bathroom Length:  3.00 Width:  3.00 Area:  9.00";

//Explode your string on space caracter:
$specs_exploded = explode(" ", $specs);

// Then,  call the following function to build your array: 
$specs_array = build_specs($specs_exploded);

// Function that builds and returns specs_array. 
function build_specs(Array $specs){

    $spec_array = array();  

    $spec_array[] = array("room"   => $specs[1], 
                          "length" => $specs[3],
                          "width"  => $specs[5], 
                           // you could also set the key programmaticaly...
                           // the following woud give you "Area" => 25.00
                          $specs[6] => $specs[7],
                          );

                     // Second room
    $spec_array[] = array("room"  => $specs[9],

                         // etc...
                         );
   return $spec_array;
}

Обратите внимание, что функция примера обрабатывает исключительно 2 комнаты.Это могло бы быть лучше, если бы у вас была одна функция, которая разбивает строку на «комнаты» и возвращает массив комнат, с помощью strpos ().

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

Надеюсь, этого достаточно, чтобы заставить вас двигаться, удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...