Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 分解并在数组中插入元素_Php_Arrays - Fatal编程技术网

Php 分解并在数组中插入元素

Php 分解并在数组中插入元素,php,arrays,Php,Arrays,我有一个数组$city: [2] => Array ( [0] => Array ( [0] => fr [1] => paris [2] => a8 ) [1] => 0 [2] => 116729 ) [3] => Array

我有一个数组
$city

[2] => Array
    (
        [0] => Array
            (
                [0] => fr
                [1] => paris
                [2] => a8
            )

        [1] => 0
        [2] => 116729
    )

[3] => Array
    (
        [0] => Array
            (
                [0] => fr
                [1] => marseille
                [2] => b8
            )

        [1] => 0
        [2] => 12898
    )

[4] => Array
    (
        [0] => Array
            (
                [0] => fr
                [1] => lyon
                [2] => b9
            )

        [1] => 0
        [2] => 8608
    )
等等。。。 我正在尝试将其转换为:

[2] => Array
    (
        [0] => fr
        [1] => paris
        [2] => 0
        [3] => 116729
    )

[3] => Array
    (
        [0] => fr
        [1] => marseille
        [2] => 0
        [3] => 12898
    )

[4] => Array
    (
        [0] => fr
        [1] => lyon
        [2] => 0
        [3] => 8608
    )
我是这样做的:

foreach ($city as $key => $value){
$city[$key][0] = $city[$key][0][0];
array_splice( $city[$key], 1, 0, $city[$key][0][1] );
 }
但这里的问题是结果数组:

[2] => Array
    (
        [0] => fr
        [1] => r
        [2] => 0
        [5] => 0
    )

[3] => Array
    (
        [0] => fr
        [1] => r
        [2] => 0
        [5] => 0
    )

[4] => Array
    (
        [0] => fr
        [1] => r
        [2] => 0
        [5] => 0
    )
我的代码中有什么错误,我可以修复它吗?

试试这个

foreach($city as $key => $value) {
    $city[$key] = [
        $value[0][0], //fr
        $value[0][1], //lyon
        $value[1], //0
        $value[2], //8608
    ];
}
完成后:

$city[$key][0] = $city[$key][0][0];
您无法引用原始的
$city[$key][0]
,因为您已将其替换。解决方案是首先将其保存在变量中:

foreach ($city as $key => &$value){
    $subarray = $value[0];
    $value[0] = $subarray[0];
    array_splice($value, 1, 0, $subarray[1] );
 }
我还使用了一个引用,以避免在循环中重复
$city[$key]

现在开始(假设您的数组在下面的示例中称为
$new
):

退换商品 编辑 使用以下选项忽略第一个多维数组中的索引[2]

$d = array();
$i = 0;
foreach ($new as $item) {

    foreach ($item as $derp) {

        if (is_array($derp)) {
            foreach ($derp as $key => $derrrrrr) {
                if ($key !== 2) {
                    $d[$i][] = $derrrrrr;
                }
            }
        } else {
            $d[$i][] = $derp;
        }
    }

    $i++;
}

您可以使用
array\u map
而不是
foreach

$result = array_map(
    function ($v) { return array_merge(array_slice($v[0], 0, 2), array_slice($v, 1)); },
    $array
);

$d = array();
$i = 0;
foreach ($new as $item) {

    foreach ($item as $derp) {

        if (is_array($derp)) {
            foreach ($derp as $key => $derrrrrr) {
                if ($key !== 2) {
                    $d[$i][] = $derrrrrr;
                }
            }
        } else {
            $d[$i][] = $derp;
        }
    }

    $i++;
}
$result = array_map(
    function ($v) { return array_merge(array_slice($v[0], 0, 2), array_slice($v, 1)); },
    $array
);