1

複雑なコードをたくさん使わずに、どうすれば次のことができますか?

  1. PHPで配列の各値を分解します(私はこのステップを実行する方法をある程度知っています)
  2. 最初の部分を破棄します
  3. 2番目の部分の元のキーを保持します(2つの部分しかないことはわかっています)

これは、次のことを意味します。

$array[1]=blue,green
$array[2]=yellow,red

になります

$array[1]=green //it exploded [1] into blue and green and discarded blue
$array[2]=red // it exploded [2] into yellow and red and discarded yellow

私はちょうど気づきました、for ... eachループでこれを行うことができますか?もしそうなら、ただ「はい」と答えてください。どこから始めればよいかがわかれば、コーディングできます。

4

4 に答える 4

4

これを考えると:

$array[1] = "blue,green";
$array[2] = "yellow,red";

方法は次のとおりです。

foreach ($array as $key => $value) {
    $temp = explode(",", $value, 2);  // makes sure there's only 2 parts
    $array[$key] = $temp[1];
}

あなたがそれをすることができるもう一つの方法はこのようになるでしょう:

foreach ($array as $key => $value) {
    $array[$key] = preg_replace("/^.+?,$/", "", $value);
}

...またはとの組み合わせを使用substr()するstrpos()

于 2009-10-13T00:37:34.907 に答える
1

これを試して:

$arr = explode(',','a,b,c');
unset($arr[0]);

しかし、実際には、あなたが求めていることは意味がありません。2つの部分があることがわかっている場合は、おそらくこれに近いものが必要です。

list(,$what_i_want) = explode('|','A|B',2);
于 2009-10-13T00:08:30.463 に答える
0

開始する配列:

$array[1] = "blue,green";
$array[2] = "yellow,red";

それをコーディングする1つの方法:

function reduction($values)
{
    // Assumes the last part is what you want (regardless of how many you have.)
    return array_pop(explode(",", $values));
}

$prime = array_map('reduction', $array);

注:これにより、とは異なる配列が作成されます$array

したがって、 $array==$primeですが、 ===ではありません $array$prime

于 2009-10-13T00:52:10.000 に答える
0
foreach ($array as $k => &$v) {
    $v = (array) explode(',', $v);
    $v = (!empty($v[1])) ? $v[1] : $v[0];
}
于 2009-10-13T00:32:50.297 に答える