2011-07-25 20 views
5
私は、文字列を爆発したい

に値を代入しますが、結果の配列を持つように()関数を使用して爆発がキーではなく整数として特定の文字列を持っています。私は、文字列「ジョーBloggs」を持っていた場合、私のような連想配列だったように、Idが」それを爆発したい:現時点でPHPの連想配列

$arr['first_name'] = "Joe"; 
$arr['last_name'] = "Bloggs"; 

を、私が行うことができます。

$str = "Joe Bloggs"; 
$arr['first_name'] = explode(" ", $str)[0]; 
$arr['last_name'] = explode(" ", $str)[1]; 

非効率的ですなぜなら私は2度爆発しなければならないからです。

それとも私が行うことができます。

$str = "Joe Bloggs"; 
$arr = explode(" ", $str); 
$arr['first_name'] = $arr[0]; 
$arr['last_name'] = $arr[1]; 

をしかし、任意のより直接的な方法があるのだろうか。

多くのありがとうございます。

答えて

18

ただし、これを行うことができますlist()呼び出しを不必要に長くすることなく、フィールドを必要とするはずです。

8

あなたはlistPHP ManualDemo)を利用することができます:

$str = "Joe Bloggs"; 
list($arr['first_name'], $arr['last_name']) = explode(" ", $str); 

$arrは次のようになります。

Array 
(
    [last_name] => Bloggs 
    [first_name] => Joe 
) 
+0

あなたの答えとデモのための乾杯。 – Joe

6

あなたがPHP < = 5.3でexplode(" ", $str)[0]を行うことはできません。それはあなたが追加することができますので、私はまた、(リストを使用しての上にこれを選ぶだろう):

$fields = array ('first_name', 'last_name'); 
$arr = array_combine ($fields, explode (" ", $str)); 

編集:私はそうのようなarray_combineを使用することになり

list($arr['first_name'], $arr['last_name']) = explode(" ", $str); 
+0

あなたの答えをお寄せいただきありがとうございます。 "explode(" "、$ str)[0]" – Joe