将字符串放入数组,每隔一行

时间:2018-11-23 17:36:36

标签: php arrays string

我想将我的字符串转换成数组,我给你我想要的东西和我尝试过的例子。我的字符串看起来像这样:

Height:
3/16
Color:
Standard Red
Material:
Die-cut, pressure-sensitive paper
Package Quantity:
1000/Pkg
Reusable:
Yes
Size:
3/16 H x 1/4 W

我希望它将其转换为数组,如下所示:

Array
(
    [0] => Height: 3/16
    [1] => Color: Standard Red
    [2] => Material: Die-cut, pressure-sensitive paper
    [3] => Package Quantity: 1000/Pkg
    [4] => Reusable: Yes
    [5] => Size: 3/16 H x 1/4 W
)

我尝试过:

$array = explode("\n", $string);

但是我得到了这个结果:

Array
(
    [0] => Height:
    [1] => 3/16
    [2] => Color:
    [3] => Standard Red
    [4] => Material:
    [5] => Die-cut, pressure-sensitive paper
    [6] => Package Quantity:
    [7] => 1000/Pkg
    [8] => Reusable:
    [9] => Yes
    [10] => Size:
    [11] => 3/16 H x 1/4 W
    [12] => 
)

2 个答案:

答案 0 :(得分:1)

通过将字符串分成几行,您在正确的轨道上。然后,您需要group the array into pairs行,implode在一起。在这里,我使用array_map一次修改每个对,但如果更简单,也可以通过简单的for循环来完成。

$lines = explode("\n", trim($string));

$combined = array_map(
  function($line) { return implode(' ', $line); },
  array_chunk($lines, 2)
);

$combined现在应该与您问题中的输出匹配。有关完整示例,请参见https://3v4l.org/ZdgWS

答案 1 :(得分:0)

您可以使用以下内容:

render() {
  return (
    <View style={[styles.container,styles.justify_center,styles.align_items_center]}>
      {this.props.children}
    </View>
  );
}

输出:

preg_match_all('/(?<key>.+):\n(?<value>.+)/', $s, $a);
$result = array_combine($a['key'], $a['value']);

print_r($result);

因此,您只需要使用以下两个功能: array_combine() preg_match_all()