hageking
@hageking

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

phpの配列について

Q&A

Closed

##から始まる要素を見つけそのあとに続く次の##から始まる要素までを1つの配列にまとめたいです。

Array ( [0] => ##test1
[1] => test
[2] => test
[3] => ##test2
[4] => test
[5] => test
[6] => ) 

という配列があります。
##から始まる要素を見つけそのあとに続く次の##から始まる要素までを1つの配列にまとめたいです。
どなたかわかる方教えてくれると嬉しいです。
(やりたいこと)

Array ( [0] => ##test1
[1] => test
[2] => test
[3] => )



Array ( [0] => ##test2
[1] => test
[2] => test
[3] => )

に分けたい

0

2Answer

foreachを使って最初の2文字が##であればメインの配列に追加、一時配列は初期するというような処理で実現できると思います。

試しに作ってみました。

$arr = array('##test1', 'test2', 'test3', '##test4', 'test5');

$new_arr = array();
$temp_arr = array();

foreach ($arr as &$value) {
    if (substr($value, 0, 2) == '##') {
        if(!empty($temp_arr)){
            array_push($new_arr, $temp_arr);
            $temp_arr = array();
        }
    }
    // $value = $value * 2;
    array_push($temp_arr, $value);
}

array_push($new_arr, $temp_arr);

var_dump($new_arr);
array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(7) "##test1"
    [1]=>
    string(5) "test2"
    [2]=>
    string(5) "test3"
  }
  [1]=>
  array(2) {
    [0]=>
    string(7) "##test4"
    [1]=>
    string(5) "test5"
  }
}
0Like

回答ありがとうございます。
@YottyPGさんの回答で解決しました。
PHP初心者なのでまだこれからも質問するかもしれません。
その時はよろしお願いします。

0Like

Your answer might help someone💌