3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php /** * ArrayStacker */ class ArrayStacker { /** * Find double values in array and remove them * @param array $array */ protected function _filterArrayDistict($array) { $newArray = array(); foreach($array as $value) { if(!in_array($value, $newArray)) { $newArray[] = $value; } } return $newArray; } /** * Split the whole string into a big array * * @param string $string * @return array */ protected function _splitString($string) { $lines = explode("\n", $string); $i = 0; $array = array(); foreach($lines as $line) { $values = explode(' / ', $line); foreach($values as $v => $value) { $values[$v] = trim($value); // make sure we got no whitespaces } $array[$i] = $values; $i++; } return $array; } /** * Build a stacked array * * @param array $array unstacked array * @return stacked array */ protected function _stack($array) { $stackedArray = array(); $key = array_shift($array); $depth = count($array); if($depth == 1) { $stackedArray[][$key] = $array[0]; // that's a single value } else { $subArray = $this->_stack($array); if($subArray != null) { $stackedArray[][$key] = $subArray; } } return $stackedArray; } /** * * @param unknown_type $array1 * @param unknown_type $array2 */ protected function _depthArrayMerge($array1, $array2) { } /** * Build stacked array from string * * @param string $string * @return array stacked array */ public function stackArray($string) { // Split the string to an array $array = $this->_splitString($string); // Filter out doubled values $array = $this->_filterArrayDistict($array); // Build stacked array $stackedArray = array(); foreach($array as $row) { $stackedArray[] = $this->_stack($row); } return $stackedArray; } } $string = "Football / Germany / 1.Liga Football / Germany / 1.Liga Football / Germany / 2.Liga Football / Germany / 2.Liga Football / Germany / 2.Liga Football / England / 1.Liga Football / England / 1.Liga Football / England / 2.Liga Football / England / 2.Liga Football / England / 3.Liga Hockey / Germany / 1.Liga Hockey / Germany / 1.Liga Hockey / Germany / 2.Liga Fechten / Meisterschaft Fechten / Meisterschaft Fechten / Weltmeister"; $arrayStacker = new ArrayStacker(); $stackedArray = $arrayStacker->stackArray($string); var_dump($stackedArray); /* * OUTPUT: array(3) { ["Football"]=> array(2) { ["Germany"]=> array(2) { [0]=> string(6) "1.Liga" [1]=> string(6) "2.Liga" } ["England"]=> array(3) { [0]=> string(6) "1.Liga" [1]=> string(6) "2.Liga" [2]=> string(6) "3.Liga" } } ["Hockey"]=> array(1) { ["Germany"]=> array(2) { [0]=> string(6) "1.Liga" [1]=> string(6) "2.Liga" } } ["Fechten"]=> array(2) { [0]=> string(13) "Meisterschaft" [1]=> string(11) "Weltmeister" } } */
Output for 5.0.0 - 5.6.21, hhvm-3.12.0, 7.0.0 - 7.1.0
array(9) { [0]=> array(1) { [0]=> array(1) { ["Football"]=> array(1) { [0]=> array(1) { ["Germany"]=> string(6) "1.Liga" } } } } [1]=> array(1) { [0]=> array(1) { ["Football"]=> array(1) { [0]=> array(1) { ["Germany"]=> string(6) "2.Liga" } } } } [2]=> array(1) { [0]=> array(1) { ["Football"]=> array(1) { [0]=> array(1) { ["England"]=> string(6) "1.Liga" } } } } [3]=> array(1) { [0]=> array(1) { ["Football"]=> array(1) { [0]=> array(1) { ["England"]=> string(6) "2.Liga" } } } } [4]=> array(1) { [0]=> array(1) { ["Football"]=> array(1) { [0]=> array(1) { ["England"]=> string(6) "3.Liga" } } } } [5]=> array(1) { [0]=> array(1) { ["Hockey"]=> array(1) { [0]=> array(1) { ["Germany"]=> string(6) "1.Liga" } } } } [6]=> array(1) { [0]=> array(1) { ["Hockey"]=> array(1) { [0]=> array(1) { ["Germany"]=> string(6) "2.Liga" } } } } [7]=> array(1) { [0]=> array(1) { ["Fechten"]=> string(13) "Meisterschaft" } } [8]=> array(1) { [0]=> array(1) { ["Fechten"]=> string(11) "Weltmeister" } } }
Output for hhvm-3.10.0

Process exited with code 153.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/cNlsM on line 11
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/cNlsM on line 11
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/cNlsM on line 11
Process exited with code 255.