首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组继续重复在前面

数组继续重复在前面
EN

Stack Overflow用户
提问于 2019-07-23 07:54:46
回答 4查看 546关注 0票数 2

我有一个数组在它的值中保存字符串,我在每个值中找到下划线,分割它并将它插入到新数组中,它做得很好,但是只对第二个数组中的第一个数组,它也重复第一个数组。

,例如

代码语言:javascript
复制
$someArraVal[] = 'abc_xyz__vr1_vr2';
$someArraVal[] = 'emf_ccc__vr2_vr3';

首先,在双下划线之后,我得到了所有的东西,然后用下划线爆炸它们,并尝试像下面这样的数组。

代码语言:javascript
复制
Array
(
[0] => Array
    (
        [0] => vr1
        [1] => vr2
    )

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

但我得到了

代码语言:javascript
复制
Array
(
[0] => Array
    (
        [0] => vr1
        [1] => vr2
    )

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

代码语言:javascript
复制
    $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);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-23 08:01:43

您从不重置$arr2,因此每次迭代都会追加更多的数据。

您可以在$arr2 = []之后添加foreach

更好的解决办法是:

代码语言:javascript
复制
foreach ($someArraVal as $key => $value) {
    $afterunderscore = substr($value, strpos($value, "__") + 1);
    $xmx[] = explode('_',substr($afterunderscore, 1));
}

实例:3v4l

票数 1
EN

Stack Overflow用户

发布于 2019-07-23 07:59:10

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

代码语言:javascript
复制
.
.
.


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

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

    }
票数 2
EN

Stack Overflow用户

发布于 2019-07-23 08:04:32

代码语言:javascript
复制
Second array keeps repeating because you are looping inside the array which will take all the values.

<?php

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

    $arr1 = [];
    foreach ($someArraVal as $key => $value) {

        $afterunderscore = substr($value, strpos($value, "__") + 1);
        $abc = substr($afterunderscore, 1);
        $arr1[] = explode('_',$abc);    
    }

echo '<pre>';
print_r($arr1);
echo '</pre>';

Please check : https://prnt.sc/oitez2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57159296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档