Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何分解ans将数组值更改为键?_Php_Arrays - Fatal编程技术网

Php 如何分解ans将数组值更改为键?

Php 如何分解ans将数组值更改为键?,php,arrays,Php,Arrays,我有一个这样的数组 Array ( [0] => Array ( [0] => a~226 [1] => a~228 ) [1] => Array ( [0] => b~123 [1] => b~209 ) [2] => Array (

我有一个这样的数组

Array
(
    [0] => Array
        (
            [0] => a~226
            [1] => a~228
        )

    [1] => Array
        (
            [0] => b~123
            [1] => b~209
        )

    [2] => Array
        (
            [0] => c~161
            [1] => c~140
        )

)
我想用~symbol分解这个数组,我希望value是php数组中的一个键。我想要这样的数组。请帮助我编写代码

Array
(
    [0] => Array
        (
            [a] => 226
            [a] => 228
        )

    [1] => Array
        (
            [b] => 123
            [b] => 209
        )

    [2] => Array
        (
            [c] => 161
            [c] => 140
        )

)
提前感谢…

试试这个

$arr_new  = array();
foreach($arr_main as $key=>$arr)
{
    foreach($arr as $k=>$val)
    {
        $str = explode("~",$val);
        $arr_new[$key][$str[0].$k]=$str[1];
    }
}

将索引保持为
a0,a1

您不能拥有这样的数组。 钥匙必须是唯一的(如马克·贝克所说)

你可以有这样的东西:

Array
(
    [a] => Array
        (
            [0] => 226
            [1] => 228
        )

    [b] => Array
        (
            [0] => 123
            [1] => 209
        )

    [c] => Array
        (
            [0] => 161
            [1] => 140
        )

)
执行此操作的代码:

$array = array(
    array("a~226", "a~228"), 
    array("b~123", "b~209"), 
    array("c~161", "c~140")
);

$result = array();

foreach($array as $inner_array) {
    foreach($inner_array as $value) {
        $spitted = explode("~", $value);
        $result[$spitted[0]][] = end($spitted);
    }

}

工作示例:

您无法创建该数组,因为kes必须是唯一的。。。同一数组中具有相同键的两个键(例如
a
a
b
b
)不可用unique@vascowhite你是对的。但是代码是正确的在第二个数组中只维护一个索引,并且与值重叠。代码在某些情况下可能是正确的,但在这个情况下不正确。@vascowhite我在代码中做了一些更改以维护唯一索引,但仍然不是要求的,我想只有OP才能决定这是否足够:)我建议扩展您的答案,解释OP无法获得示例中要求的数组的原因。他对数组索引的了解不够,这就是他放置重复索引的原因。我只是想帮助他