0

ノブの質問です。私はこれを持っています:

Array
(
    [0] => address = 123 Something Street
    [1] => address2 = Something else
    [2] => city = Kalamazoo
    [3] => state = MI
    [4] => zip = 49097
    [5] => country = United States
)

しかし、私はこれが欲しい:

Array
(
    [address] => 123 Something Street
    [address2] => Something else
    [city] => Kalamazoo
    [state] => MI
    [zip] => 49097
    [country] => United States
)

どうすればいいですか?ありがとう!

4

4 に答える 4

9

これを試して:

$new_array = array();
foreach($your_array as $line) {
 list($key, $value) = explode('=', $line, 2);
 $new_array[$key] = $value;
}

アクセス$new_array

于 2012-05-11T15:40:11.060 に答える
3

配列をループして、値を「=」の前のビットと後のビットに分割する必要があります。これら 2 つのデータを使用して、最初のビットでインデックス付けされ、2 番目のビットとして値を持つ新しい配列を作成できます。

$new_array = array();
foreach($your_array as $value)
{
    $chunks = explode(' = ', $value);
    $key = $chunks[0];
    $new_array[$key] = $chunks[1];
}
于 2012-05-11T15:42:27.720 に答える
1
$arrayOriginal = Array
(
    [0] => address = 123 Something Street
    [1] => address2 = Something else
    [2] => city = Kalamazoo
    [3] => state = MI
    [4] => zip = 49097
    [5] => country = United States
);
$arrayNew = Array();
for($arrayOriginal as $value)
{
    $strArray = explode(" = ", $value, 2);
    $arrayNew[$strArray[0]] = $stArray[1];
}

配列が正確にフォーマットされていない可能性が高い場合は、代わりに次のようにしてください。

for($arrayOriginal as $value)
{
    $strArray = explode("=", $value, 2);
    $arrayNew[trim($strArray[0])] = trim($strArray[1]);
}

これにより、「something = something」のような値でも正しく解析されることが保証されます。

于 2012-05-11T15:42:04.820 に答える
0

これを自動的に行う機能はないと思いますが、次のように書きました。

$newArr = array();
foreach ($oldArr as $value) {
    $split = explode(" = ", $value, 2);
    $newArr[$split[0]] = $split[1];
}
于 2012-05-11T15:43:42.470 に答える