2

これじゃ頭が回らない…

たとえば、次のように全体を分解します。

$extract = expand('tra-la-la', $big_sourse);

次に、インデックス 1 の値を取得します。

$finish = $extract[1];

私の質問は、いわば、それを一度に取得する方法です。これに似たもの:

$finish = expand('tra-la-la', $big_sourse)[1]; // 動作しません

次のようなものは魅力のように機能します。

$finish = end(explode('tra-la-la', $big_sourse));

// また

$finish = array_shift(explode('tra-la-la', $big_sourse));

しかし、値が中間のどこかにある場合はどうなるでしょうか?

4

4 に答える 4

7

関数配列の逆参照は、PHP 5.4 で実装されました。古いバージョンでは、ここで修正された PHP パーサーの制限であるため、今のところ回避する方法はありません。

于 2010-06-23T07:14:53.880 に答える
1

そんな感じ :

end(array_slice(explode('tra-la-la', $big_sourse), 1, 1));

2行で書くよりも良い/明確/きれいだとは思いませんが.

于 2010-06-23T07:16:26.547 に答える
0

あなたが使用することができますlist:

list($first_element) = explode(',', $source);

[1]実際には配列の 2 番目の要素になりますが、本当にそれを意図しているかどうかはわかりません。その場合は、別の変数をリスト構成に追加するだけです (必要に応じて最初の変数を省略します)。

list($first_element, $second_elment) = explode(',', $source);
// or
list(, $second_element) = explode(',', $source);
于 2010-06-23T07:19:07.840 に答える
0

私の提案 - はい、私は何かを理解しました - は、関数に許可された追加の引数を使用することです。正の値が設定されている場合、返される配列には最大数の limit 要素が含まれ、最後の要素には残りの文字列が含まれます。したがって、たとえばインデックス 2 の値を取得したい場合 (もちろん、必要な値があらかじめそこにあることは確かです)、次のようにします。

$finish = end(explode('tra-la-la', $big_sourse, 3)); 

爆発は、最大 3 つの要素を含む配列を返すため、検索した最後の要素 (インデックス 2) まで「終了」します。これで完了です!

于 2010-06-23T11:03:07.323 に答える