

PHPの宿題で分からないことがあるので教えて下さい。

> 配列 `array("He", "is", "a fat man")` を、 `array("He", "is", "a", "fat",
> "man")`  
>  に変換するような関数 lens() を実装しなさい。

私の書いたコードは

[code]

    <?php
    function lens(array $arr) {
        $tmp1 = array_pop($arr);
        $tmp2 = explode(" ", $tmp1);
        $result = array_merge($arr, $tmp2);
        return $result;
    }
    
    $before = array("He", "is", "a fat man");
    $after = lens($before);
    print_r($after);
    
[/code]

こんな感じです。これでもだいぶ短くしたつもりだったのですが、先生が言うには、これでもまだ長すぎで、関数の中をもっとシンプルにできるとのこと。  
関数を2つ使うだけで出来るらしいのですが、どうすれば良いのか見当もつかないので教えてください。

提出期限は明日（日曜）の午前中なので、どうかよろしくお願いします。


CC BY-SA 3.0
2015-08-07T16:22:19.710
13153
2015-08-08T10:51:12.620
10840
question
php
PHPでプログラミングの宿題


質問者です。多数の親切な回答ありがとうございます。

なるほど、"a fat man" をそのまま explode しても思った通りの結果が得られないけれど、lens() の中でいったん全体を implode
することにより explode しやすくなるわけですね。  
納得しました！  
提出期限が明日 (9日) の午前11時だったのですが、なんとか間に合いそうです。ありがとうございました。


CC BY-SA 3.0
2015-08-08T05:29:51.237
13160
2015-08-08T10:51:12.620
2015-08-08T10:51:12.620
10844
10844
13153
answer


マウスカーソルを合わせると表示されます。  
必ず自分で考えた上で閲覧する事をオススメします。

  * ヒント１

> 分割するべき文字列は半角の空白で区切られている

  * ヒント２

> 既に配列になっているのであれば、一度結合し文字列にすることで扱いやすくなる

  * ヒント３

> `implode(結合文字, 配列)`  
>  `explode(分割文字, 対象文字列)`

  * 回答

> `function lens(array $arr){ return explode(" ", implode(" ", $arr)); }`


CC BY-SA 3.0
2015-08-08T05:50:52.450
13162
2015-08-08T05:50:52.450
7676
13153
answer