我有一个数组在它的值中保存字符串,我在每个值中找到下划线,分割它并将它插入到新数组中,它做得很好,但是只对第二个数组中的第一个数组,它也重复第一个数组。
,例如
$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);发布于 2019-07-23 08:01:43
您从不重置$arr2,因此每次迭代都会追加更多的数据。
您可以在$arr2 = []之后添加foreach。
更好的解决办法是:
foreach ($someArraVal as $key => $value) {
$afterunderscore = substr($value, strpos($value, "__") + 1);
$xmx[] = explode('_',substr($afterunderscore, 1));
}实例:3v4l
发布于 2019-07-23 07:59:10
您需要在foreach循环开始时清空数组$arr2。
.
.
.
foreach ($someArraVal as $key => $value) {
$arr2 = []; //Empty the $arr2 at begining of the loop
.
.
.
}发布于 2019-07-23 08:04:32
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/oitez2https://stackoverflow.com/questions/57159296
复制相似问题