38

私はこれを持っています:

$strVar = "key value";

そして、私はこれを取得したい:

array('key'=>'value')

私は爆発()でそれを試しましたが、それは私にこれを与えます:

array('0' => 'key',
      '1' => 'value')

元の $strVar は、すでに展開された文字列の結果であり、結果の配列のすべての値をループしています。

4

15 に答える 15

54

1 回の操作でこれが可能だとは思わないでください。ただし、これでうまくいくはずです。

list($k, $v) = explode(' ', $strVal);
$result[ $k ] = $v;
于 2013-04-12T08:39:46.373 に答える
4
$strVar = "key value";
list($key, $val) = explode(' ', $strVar);

$arr= array($key => $val);

編集: 私の間違い、爆発の代わりに分割を使用しましたが:

split() 関数は、PHP 5.3.0 で非推奨になりました。この機能に依存することはお勧めしません

于 2013-04-12T08:39:13.227 に答える
3

2 つおきの文字列をループできます。

$how_many = count($array);
for($i = 0; $i <= $how_many; $i = $i + 2){
  $key = $array[$i];
  $value = $array[$i+1];
  // store it here
}
于 2013-04-12T08:39:19.903 に答える
3

これを試して

$str = explode(" ","key value");
$arr[$str[0]] = $str[1];
于 2013-04-12T08:39:28.813 に答える
2
$pairs = explode(...);
$array = array();
foreach ($pair in $pairs)
{
    $temp = explode(" ", $pair);
    $array[$temp[0]] = $temp[1];
}

しかし、配列とexplode. したがって、あなたが私たちに与えていない制約があるかもしれません。質問を更新して説明することができます。

于 2013-04-12T08:42:45.123 に答える
1

別の 1 行:

parse_str(str_replace(' ', '=', $strVar), $array);
于 2015-09-02T15:24:34.170 に答える
1

文字列に 2 つ以上の単語がある場合は、次のコードを使用します。

    $values = explode(' ', $strVar);

    $count = count($values);
    $array = [];

    for ($i = 0; $i < $count / 2; $i++) {
        $in = $i * 2;
        $array[$values[$in]] = $values[$in + 1];
    }

    var_dump($array);

は、$array奇数位置の単語keyと偶数位置の単語を$valueそれぞれ保持します。

于 2016-02-19T07:03:36.813 に答える