3v4l.org

run code in 300+ PHP versions simultaneously
<?php $myArray = ['a','b','c','title1','d','e','f','title2','g','h','title3','i','title4','j','k']; $batch = 0; // default value foreach ($myArray as $v) { if (strpos($v, 'title') !== 0) { // value is NOT a "title#"" string $result[$batch][] = $v; // save with current batch value as 1st level key } else { $batch = $v; // update batch value with "title#" string } } var_export($result);
Output for 5.6.38, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array ( 0 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), 'title1' => array ( 0 => 'd', 1 => 'e', 2 => 'f', ), 'title2' => array ( 0 => 'g', 1 => 'h', ), 'title3' => array ( 0 => 'i', ), 'title4' => array ( 0 => 'j', 1 => 'k', ), )

preferences:
109.63 ms | 1543 KiB | 4 Q