1

如何在没有大量复杂代码的情况下执行以下操作?

  1. 在 PHP 中分解数组的每个值(我有点知道如何执行此步骤)
  2. 丢弃第一部分
  3. 保留第二部分的原始密钥(我知道只有两个部分)

我的意思是:

$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]);

虽然,真的,你问什么没有意义。如果你知道有两个部分,你可能想要更接近这个的东西:

list(,$what_i_want) = explode('|','A|B',2);
于 2009-10-13T00:08:30.463 回答
0
foreach ($array as $k => &$v) {
    $v = (array) explode(',', $v);
    $v = (!empty($v[1])) ? $v[1] : $v[0];
}
于 2009-10-13T00:32:50.297 回答
0

你开始的数组:

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

一种编码方式:

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 回答