首页 > 解决方案 > 数组在foreach中不断重复

问题描述

我有一个数组在它的值中保存字符串,我在每个值中发现下划线将其破坏并将其插入到新数组中,它做得很好,但仅对于第二个数组中的第一个数组它也重复第一个数组。

例如

$someArraVal[] = 'abc_xyz__vr1_vr2';
$someArraVal[] = 'emf_ccc__vr2_vr3';

首先,我在双下划线之后得到所有内容,然后用下划线爆炸它们并尝试拥有如下所示的数组

Array
(
[0] => Array
    (
        [0] => vr1
        [1] => vr2
    )

[1] => Array
    (
        [2] => vr3
        [3] => vr4
    )
)

但我得到

Array
(
[0] => Array
    (
        [0] => vr1
        [1] => vr2
    )

[1] => Array
    (
        [0] => vr1
        [1] => vr2
        [2] => vr3
        [3] => vr4
    )
)

代码

    $someArraVal[] = 'abc_xyz__vr1_vr2';
    $someArraVal[] = 'emf_ccc__vr3_vr4';

    $arr1 = [];
    $arr2 = [];
    $xmx = [];


    foreach ($someArraVal as $key => $value) {

        $afterunderscore = substr($value, strpos($value, "__") + 1);
        // $addPipe = str_replace("_","|",$afterunderscore);
        $abc = substr($afterunderscore, 1);
        $arr1 = explode('_',$abc);

        foreach ($arr1 as $k => $v) {
            $arr2[] = $v;
        }

        $xmx[] = $arr2;

    }

    printR($xmx);

标签: phparrays

解决方案


您需要$arr2在 foreach 循环开始时清空数组。

.
.
.


    foreach ($someArraVal as $key => $value) {

        $arr2 = []; //Empty the $arr2 at begining of the loop
        .
        .
        .

    }



推荐阅读