php 访问并分解多维数组中逗号分隔的数据,然后填充一个新的二维数组

798qvoo8  于 2023-01-16  发布在  PHP
关注(0)|答案(4)|浏览(129)

我有一个包含逗号分隔字符串的多维数组,如下所示

[
    [
        "users" =>  [
            'email' => 'test@yahoo.com ,testuser@yahoo.com',
            'username' => 'test,testuser',
            'description' => 'description1,description2'
        ]
    ]
]

我想访问users子数组数据,分解分隔符,并创建索引数组的新关联数组。
预期结果:

$User = array(
    'email' => array(
        'test@yahoo.com',
        'testuser@yahoo.com'
    ),
    'username' => array(
        'test',
        'testuser'
    ),
    'description' => array(
        'description1',
        'description2'
    )
);
ktca8awb

ktca8awb1#

仅针对一个索引:

$arrayTwoD = array();
foreach ($valueMult[0]['User'] as $key => $value) { 
    $arrayTwoD[$key] = array_push(explode(',', $value));
}

如果$multArray中有多个索引:

$arrayTwoD = array();
foreach ($multArray as $keyMult => $valueMult) { 
    foreach ($valueMult['User'] as $key => $value) { 
        $arrayTwoD[$keyMult][$key] = array_push(explode(',', $value));
    }
}

$arrayTwoD = array();
foreach ($multArray as $array) { 
    foreach ($array['User'] as $key => $value) { 
        $arrayTwoD[$key] = array_push(explode(',', $value));
    }
}
r7knjye2

r7knjye22#

试试这个

$array = array(...); // your array data
$formedArray = array();

foreach ( $array as $arr )
{
    foreach ( $arr['user'] as $key => $value )
    {
        $formedArray[$key] = array_push(explode(",",$value));
    }
}

echo "<pre>";
print_r($formedArray);
echo "</pre>";
pgvzfuti

pgvzfuti3#

我知道这有点重复,但你也可以这样做:

foreach($array as $users) {
    foreach($users as &$value) { // &value is assigned by reference
        $users['users']["email"] = explode(",", $value['email']);
        $users['users']["username"] = explode(",", $value['username']);
        $users['users']["description"] = explode(",", $value['description']);
    }
}

但是在那之后,你需要使用$value,参考官方的PHP manual documentation来了解更多关于&符号在这里的作用。
Demo

qxsslcnc

qxsslcnc4#

使用array_map()可以用来访问子集数据(无需在全局作用域中声明任何新变量),并对preg_split()进行迭代调用以将分隔值分隔为子数组。
代码:(Demo

var_export(
    array_map(
        fn($csv) => preg_split('/ ?,/', $csv),
        $array[0]['users']
    )
);

相关问题