如何使用PHP将数组分解为另一个数组而不是子数组?

如何使用PHP将数组分解为另一个数组而不是子数组?

问题描述:

Is there any possibility to explode values of an array to create direct a new array with these values. I'm able to do this only with a intemidiate step.

I have following array:

Array (
[0] => OtherMachines, Polymers
[1] => Engines/Pumps/Turbines, Measurement
[2] => Materials/Metallurgy
[3] => Materials/Metallurgy, ThermProcesses
)

Then I explode its values:

foreach ($array00 as $v) {
    $array01 = explode(", ", $v);
}

and receive following array:

Array
(
[0] => Array
    (
        [0] => OtherMachines
        [1] => Polymers
    )

[1] => Array
    (
        [0] => Engines/Pumps/Turbines
        [1] => Measurement
    )

[2] => Array
    (
        [0] => Materials/Metallurgy
    )

[3] => Array
    (
        [0] => Materials/Metallurgy
        [1] => ThermProcesses
    )
)

Than I have to flatten the array to get the one I wish:

// Flatten the array.
$array02 = call_user_func_array('array_merge', $array01);

Final result:

Array (
[0] => OtherMachines
[1] => Polymers
[2] => Engines/Pumps/Turbines
[3] => Measurement
[4] => Materials/Metallurgy
[5] => Materials/Metallurgy
[6] => ThermProcesses
)

Is there any way to do this direct?

Many thanks in advance.

是否有可能爆炸数组的值来创建具有这些值的新数组。 我只能通过一个intemidiate步骤来做到这一点。 p>

我有以下数组: p>

 数组(
 [0]  => OtherMachines,Polymers 
 [1] =>发动机/泵/涡轮机,Measurement 
 [2] =>材料/冶金
 [3] =>材料/冶金,ThermProcesses 
)
   code>  pre> 
 
 

然后我将其值分解: p>

  foreach($ array00 as $ v){
 $ array01 = explode  (“,”,$ v); 
} 
  code>  pre> 
 
 

并接收以下数组: p>

  Array \  n(
 [0] =>数组
(
 [0] => OtherMachines 
 [1] =>聚合物
)
 
 [1] =>数组
(\  n [0] =>发动机/泵/涡轮机
 [1] =>测量
)
 
 [2] =>数组
(
 [0] =>材料/冶金\  n)
 
 [3] =>数组
(
 [0] =>材料/冶金
 [1] => ThermProcesses 
)
)
  code>   pre> 
 
 

我必须将数组展平以获得我想要的数组: p>

  //展平数组。
 $ array02 = call_us  er_func_array('array_merge',$ array01); 
  code>  pre> 
 
 

最终结果: p>

  Array(
 [0  ] =>  OtherMachines 
 [1] => 聚合物
 [2] => 发动机/泵/涡轮机
 [3] => 测量
 [4] => 材料/冶金
 [5] => 材料/冶金
 [6] =>  ThermProcesses 
)
  code>  pre> 
 
 

有没有办法直接这样做? p>

非常感谢提前。 p> div>

Yes, just implode it and then explode.

$result = explode(', ', implode(', ', $array));

$arr = array (
    'OtherMachines, Polymers',
    'Engines/Pumps/Turbines, Measurement',
    'Materials/Metallurgy',
    'Materials/Metallurgy, ThermProcesses'
);

print_r(array_map('trim', explode(',', implode(',', $arr))));

Array
(
    [0] => OtherMachines
    [1] => Polymers
    [2] => Engines/Pumps/Turbines
    [3] => Measurement
    [4] => Materials/Metallurgy
    [5] => Materials/Metallurgy
    [6] => ThermProcesses
)

http://codepad.org/h0n6NU3V

Or simply:

$arr = array (
    'OtherMachines, Polymers',
    'Engines/Pumps/Turbines, Measurement',
    'Materials/Metallurgy',
    'Materials/Metallurgy, ThermProcesses'
);

print_r(explode(', ', implode(', ', $arr)));