Php 将数组值转换为新数组而不丢失任何字符

Php 将数组值转换为新数组而不丢失任何字符,php,arrays,loops,explode,Php,Arrays,Loops,Explode,我有一个如下所示的数组: Array ( [basisprijs] => 17,00 [basisstaffel] => 3-10:17; 10-20:14; 20-30:12; 30-40:10; 40-50:7,50; 50-60:6,50; 60-110:6; [minimaalformaat] => 10x3 [maximaalformaat] => 120x5000

我有一个如下所示的数组:

  Array
(
    [basisprijs] => 17,00
    [basisstaffel] => 
    3-10:17;
    10-20:14;
    20-30:12;
    30-40:10;
    40-50:7,50;
    50-60:6,50;
    60-110:6;
    [minimaalformaat] => 10x3
    [maximaalformaat] => 120x5000
    [breedte] => 12
    [hoogte] => 4
    [aantal] => 1
    [Lijmlaag] => Wit(prijsberekening)+($m2*4);
)
我想从
[basisstaffel]
创建一个新数组,每个
后面都有一个新行开始,因此期望的最终结果将是:

Array
(
    [0] = > 3-10:17;
    [1] = > 10-20:14;
    [2] = > 20-30:12;
    [3] = > 30-40:10;
    [4] = > 40-50:7,50;
    [5] = > 50-60:6,50;
    [6] = > 60-110:6;
)
我该怎么做?在
上使用
分解
使我丢失了那部分值。那么还有别的办法吗


第一个数组称为
$productarray

您可以使用explode函数,然后执行foreach循环并添加“;”再一次,像这样:

$newArray=array();
$myArray=array();

$myArray['basisprijs'] = '17,00';
$myArray['basisstaffel'] ='3-10:17;10-20:14;20-30:12;30-40:10;40-50:7,50;50-60:6,50;60-110:6';
$myArray['minimaalformaat'] = '10x3';
$myArray['maximaalformaat'] = '120x5000';
$myArray['breedte'] = '12';
$myArray['hoogte'] = '4';
$myArray['aantal'] = '1';
$myArray['Lijmlaag'] = 'Wit(prijsberekening)+($m2*4)';


$basisstafel=$myArray['basisstaffel'];
$tmp = explode(";", $basisstafel);

 foreach ($tmp as $ind){
     $newArray[]=$ind.';';
 }

echo "<pre>";
  print_r($newArray);
echo "</pre>";
$newArray=array();
$myArray=array();
$myArray['basisprijs']='17,00';
$myArray['basisstaffel']='3-10:17;10-20:14;20-30:12;30-40:10;40-50:7,50;50-60:6,50;60-110:6';
$myArray['minimaalformat']='10x3';
$myArray['MaximaalFormat']='120x5000';
$myArray['breedte']='12';
$myArray['hoogte']='4';
$myArray['aantal']='1';
$myArray['Lijmlaag']='Wit(prijsberekening)+($m2*4)';
$basisstafel=$myArray['basisstaffel'];
$tmp=爆炸(“;”,$basisstafel);
foreach($tmp作为$ind){
$newArray[]=$ind.;';
}
回声“;
打印(新数组);
回声“;

您可以使用explode函数,然后执行foreach循环并添加“;”再一次,像这样:

$newArray=array();
$myArray=array();

$myArray['basisprijs'] = '17,00';
$myArray['basisstaffel'] ='3-10:17;10-20:14;20-30:12;30-40:10;40-50:7,50;50-60:6,50;60-110:6';
$myArray['minimaalformaat'] = '10x3';
$myArray['maximaalformaat'] = '120x5000';
$myArray['breedte'] = '12';
$myArray['hoogte'] = '4';
$myArray['aantal'] = '1';
$myArray['Lijmlaag'] = 'Wit(prijsberekening)+($m2*4)';


$basisstafel=$myArray['basisstaffel'];
$tmp = explode(";", $basisstafel);

 foreach ($tmp as $ind){
     $newArray[]=$ind.';';
 }

echo "<pre>";
  print_r($newArray);
echo "</pre>";
$newArray=array();
$myArray=array();
$myArray['basisprijs']='17,00';
$myArray['basisstaffel']='3-10:17;10-20:14;20-30:12;30-40:10;40-50:7,50;50-60:6,50;60-110:6';
$myArray['minimaalformat']='10x3';
$myArray['MaximaalFormat']='120x5000';
$myArray['breedte']='12';
$myArray['hoogte']='4';
$myArray['aantal']='1';
$myArray['Lijmlaag']='Wit(prijsberekening)+($m2*4)';
$basisstafel=$myArray['basisstaffel'];
$tmp=爆炸(“;”,$basisstafel);
foreach($tmp作为$ind){
$newArray[]=$ind.;';
}
回声“;
打印(新数组);
回声“;

您可以使用
preg\u split
preg\u split\u DELIM\u CAPTURE
标志。 这将返回分隔符为0、匹配符为1的匹配数组

PREG_SPLIT_DELIM_CAPTURE
如果设置了此标志,分隔符模式中的括号表达式也将被捕获并返回。

您可以使用
preg\u split
preg\u split\u DELIM\u CAPTURE
标志。 这将返回分隔符为0、匹配符为1的匹配数组

PREG_SPLIT_DELIM_CAPTURE 如果设置了此标志,分隔符模式中的括号表达式也将被捕获并返回。



看起来在
之后有换行符这样您就可以按空格
preg_分割

$result=preg_split('/\s+/',$input['basisstaffel']);
要避免第一个空项,请添加
PREG\u SPLIT\u NO\u empty
标志:

$result=preg_split('/\s+/',$input['basisstaffel'],-1,preg_split_NO_EMPTY);
或者只需将
分解
\n
\r\n\
一起使用即可(您必须知道换行符的类型):

$result=explode(“\n”,$input['basisstaffel']);

看起来在
之后有换行符这样您就可以按空格
preg_分割

$result=preg_split('/\s+/',$input['basisstaffel']);
要避免第一个空项,请添加
PREG\u SPLIT\u NO\u empty
标志:

$result=preg_split('/\s+/',$input['basisstaffel'],-1,preg_split_NO_EMPTY);
或者只需将
分解
\n
\r\n\
一起使用即可(您必须知道换行符的类型):

$result=explode(“\n”,$input['basisstaffel']);

您是否尝试过在
“\n”
上爆炸?因为似乎每一位都在新行上。不确定您在
basisstaffel
中存储值的方式,这不是标准化的,最好在数据库中拆分@KIKOSoftware谢谢我会试试的。Nigel ren是的,我知道,但我使用的CMS有一些限制,所以我必须这样存储它。您可以尝试
explode
preg\u split
是否尝试在
“\n”
上进行分解?因为似乎每一位都在新行上。不确定您在
basisstaffel
中存储值的方式,这不是标准化的,最好在数据库中拆分@KIKOSoftware谢谢我会试试的。Nigel ren是的,我知道,但我使用的CMS有一些限制,所以这就是我必须存储它的方式。您可以尝试
explode
preg_split
不工作,因为使用preg_split_DELIM_CAPTURE,它将返回
作为单独的数组项。不,它不起作用,因为使用PREG_SPLIT_DELIM_CAPTURE,它将返回
作为单独的数组项。