【问题标题】:Exploding Arrays in PHP While Keeping the Original Key在保留原始密钥的同时在 PHP 中爆炸数组
【发布时间】:2009-10-13 00:02:27
【问题描述】:

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

  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 循环来做到这一点吗?如果是这样,只需回答是。一旦我知道从哪里开始,我就可以编写代码。

【问题讨论】:

  • 你爆炸的是一个字符串,而不是一个数组
  • 提供一些例子,你所描述的没有意义。

标签: php arrays key explode


【解决方案1】:

鉴于此:

$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()的组合

【讨论】:

  • list(,$array[$key]) = explode(',',$value,2);
【解决方案2】:

试试这个:

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

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

list(,$what_i_want) = explode('|','A|B',2);

【讨论】:

    【解决方案3】:
    foreach ($array as $k => &$v) {
        $v = (array) explode(',', $v);
        $v = (!empty($v[1])) ? $v[1] : $v[0];
    }
    

    【讨论】:

    • 我也打算建议array_shift,但文档说它会重新编号你的键(如果它们是数字的话)。爆炸生成数字键。
    【解决方案4】:

    你开始的数组:

    $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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多