-3

このコードは機能します:

    $host = parse_url('http://www.cc.joomla.mywebsite.net/paypal.com/myspace.com/login.php', PHP_URL_HOST);

    $host_names = explode(".", $host);
    print_r($host_names);
    echo "<br>";
    $l = array_slice($host_names, -3);
    print_r($l);
    echo "<br>";

    $subdomain = implode(".", $l);
    echo $subdomain;    //final result


たとえば、次のように関数を 1 行にまとめることができますか。

$subdomain = implode(array_slice (explode(".", $host)($host_names, -3)(".", $l);

上記の例は機能しません。機能を組み合わせることができる場所を見たことがあると思います。

助けてくれてありがとう。

4

4 に答える 4

2

各変数を、割り当てた式に置き換えるだけです。

$host_names = explode(".", $host);
$l = array_slice($host_names, -3);

になる

$l = array_slice(explode(".", $host), -3);

それで

$l = array_slice(explode(".", $host), -3);
$subdomain = implode(".", $l);

になる

$subdomain = implode(".", array_slice(explode(".", $host), -3));
于 2013-08-21T10:28:39.053 に答える
1

3 行すべてを 1 つに混合していますが、1 つの関数の出力を別の関数に結合するには、この形式にする必要があります。

$subdomain = implode(".",array_slice(explode(".", $host), -3));
于 2013-08-21T10:28:41.030 に答える
1

そのように機能を連鎖させることができます。しかし、気をつけないと読めなくなることを気にします。あなたのように、エラーを見つけるのは難しいです:

implode(array_slice (explode(".", $host)/* this is not a valid function call */($host_names, -3) /* same here*/ (".", $l);

非常に多くの関数呼び出しがあるため、すべてを 1 行にまとめたくありません。その読み取り不能。

おそらく独自の関数を書きたいと思うでしょう: http://php.net/manual/en/functions.user-defined.php

于 2013-08-21T10:28:49.490 に答える
1

これを試してください:

$host_names = implode(".", array_slice(explode(".", $host), -3));
于 2013-08-21T10:29:10.113 に答える