我正在使用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"))
答案 0 :(得分:0)
如您所知,第一步是将字符串放在变量中,以便能够使用它。然后,您将在“房间”上拆分字符串,但我将继续此示例,就像每个$ 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个房间。如果你有一个函数在“rooms”中拆分字符串并返回一个房间数组,并使用strpos(),这可能会更好。
将返回的 rooms 数组传递给上述示例函数的版本,该函数一次只能处理一个房间。
希望这足以让你滚动,祝你好运!