84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
[0.6,0.7,1,0,-1,-2,-3,0,0,-1,-5,-6,1,3,4]
is divided into
[
[0.6,0.7,1],
[0],
[-1,-2,-3],
[0,0],
[-1,-5,-6],
[1,3,4]
]
How should this program be written
The method is a bit stupid, but it can achieve the effect you want. I hope it can help you. The code is as follows: public function index() { $array = [0.6, 0.7, 1, 0, -1, -2, -3, 0, 0, -1, -5, -6, 1, 3, 4]; $result = []; foreach ($array as $value) { $count = count($result); if ($count > 0) { $single = $result[$count - 1]; $index = end($single); if (0 === $index) { if (0 === $value) { $result = $this->handleArray($result, $single, $value, $count); } else { $result = $this->handleArrayTwo($result, $value); } } elseif ($index > 0) { if ($value handleArrayTwo($result, $value); } else { $result = $this->handleArray($result, $single, $value, $count); } } elseif ($index = 0) { $result = $this->handleArrayTwo($result, $value); } else { $result = $this->handleArray($result, $single, $value, $count); } } } else { $result = $this->handleArrayTwo($result, $value); } } var_dump($result); die; } private function handleArray($result, $single, $value, $index) { unset($result[$index - 1]); array_push($single, $value); array_push($result, $single); return array_values($result); } private function handleArrayTwo($result, $value) { $array = []; array_push($array, $value); array_push($result, $array); return $result; } // array(6) { //[0]=> // array(3) { //[0]=> // float(0.6) //[1]=> // float(0.7) //[2]=> // int(1) // } //[1]=> // array(1) { //[0]=> // int(0) // } //[2]=> // array(3) { //[0]=> // int(-1) //[1]=> // int(-2) //[2]=> // int(-3) // } //[3]=> // array(2) { //[0]=> // int(0) //[1]=> // int(0) // } //[4]=> // array(3) { //[0]=> // int(-1) //[1]=> // int(-5) //[2]=> // int(-6) // } //[5]=> // array(3) { //[0]=> // int(1) //[1]=> // int(3) //[2]=> // int(4) // } //}
The method is a bit stupid, but it can achieve the effect you want. I hope it can help you. The code is as follows: public function index() { $array = [0.6, 0.7, 1, 0, -1, -2, -3, 0, 0, -1, -5, -6, 1, 3, 4]; $result = []; foreach ($array as $value) { $count = count($result); if ($count > 0) { $single = $result[$count - 1]; $index = end($single); if (0 === $index) { if (0 === $value) { $result = $this->handleArray($result, $single, $value, $count); } else { $result = $this->handleArrayTwo($result, $value); } } elseif ($index > 0) { if ($value handleArrayTwo($result, $value); } else { $result = $this->handleArray($result, $single, $value, $count); } } elseif ($index = 0) { $result = $this->handleArrayTwo($result, $value); } else { $result = $this->handleArray($result, $single, $value, $count); } } } else { $result = $this->handleArrayTwo($result, $value); } } var_dump($result); die; } private function handleArray($result, $single, $value, $index) { unset($result[$index - 1]); array_push($single, $value); array_push($result, $single); return array_values($result); } private function handleArrayTwo($result, $value) { $array = []; array_push($array, $value); array_push($result, $array); return $result; } // array(6) { //[0]=> // array(3) { //[0]=> // float(0.6) //[1]=> // float(0.7) //[2]=> // int(1) // } //[1]=> // array(1) { //[0]=> // int(0) // } //[2]=> // array(3) { //[0]=> // int(-1) //[1]=> // int(-2) //[2]=> // int(-3) // } //[3]=> // array(2) { //[0]=> // int(0) //[1]=> // int(0) // } //[4]=> // array(3) { //[0]=> // int(-1) //[1]=> // int(-5) //[2]=> // int(-6) // } //[5]=> // array(3) { //[0]=> // int(1) //[1]=> // int(3) //[2]=> // int(4) // } //}