将索引数组转换为与索引爆炸值关联的数组

时间:2018-01-08 18:34:41

标签: php arrays

将像这样的数组转换为关联数组时出现问题

  

$ array =

Array
(
    [0] => 154654654455|WS01
    [1] => 456541232132|WS02
)

进入关联数组。

我可以做一个foreach循环并爆炸值

$values2 = array();

foreach ($array as $key => $value) {
    $values2[] = explode("|",$value);
}

但后来我得到了这样的东西

Array
(
    [0] => Array
        (
            [0] => 154654654455
            [1] => WS01
        )

    [1] => Array
        (
            [0] => 456541232132
            [1] => WS02
        )
)

将这样的内容转换为类似

的关联数组的最佳方法是什么
Array
(
    [154654654455] => WS01
    [456541232132] => WS02
)

6 个答案:

答案 0 :(得分:4)

$values2 = array();

foreach ($array as $key => $value) {
    $expl = explode("|",$value);
    $values2[$expl[0]] = $expl[1];
}

答案 1 :(得分:3)

可能不是最优雅的方式,但修改你的方法就是:

$values2 = array();

foreach ($array as $key => $value) {
    $t = explode("|",$value);
    $values2[$t[0]] = $t[1];
}

答案 2 :(得分:2)

将您的foreach循环更改为此

foreach ($array as $key => $value) {
        $temp = explode("|",$value);
        $values2[$temp[0]] = $temp[1];
}

答案 3 :(得分:2)

您需要做的就是将爆炸的第一项设置为键,将第二项设置为值:

$array = [
    '154654654455|WS01',
    '456541232132|WS02',
];

$values2 = [];

foreach ($array as $key => $value) {
    $data = explode('|', $value);
    $values2[$data[0]] = $data[1];
}

演示:https://3v4l.org/cEJE5

答案 4 :(得分:0)

不是最佳答案,但完整性;在循环之后,您可以在1列上提取0列作为值和索引:

$values2 = array_column($values2, 1, 0);

答案 5 :(得分:0)

我将把exact same答案放在其他人身上,但我会省略未使用的$key变量......

$val2 = array();

foreach ($array as $v) {
    $tmp = explode("|",$v);
    $val2[$tmp[0]] = $tmp[1];
}