如何将数组内部的字符串分解为更多数组PHP

时间:2013-03-07 10:59:20

标签: php arrays preg-split

基本上我有一个数组有几个字符串作为值(不是关联数组)。我需要获取每个字符串的特定部分并将其转换为具有两个值的数组。

这是我的数组的结构:

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

所以我需要将这些值中的每一个变成这样的数组:

$data = array(
    array("A1", "B1");
    array("A2", "B2");
    ...
);

我一直在考虑使用preg_split来打破每个字符串,但无法让它在数组中运行。不确定preg_split是最好的方法,所以我愿意接受建议。

由于

6 个答案:

答案 0 :(得分:4)

尝试:

foreach($data as $k => $c){
    $data[$k] = explode(" -- ", $c);
}

答案 1 :(得分:1)

试试这个:

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

$res             = array();
foreach($data as $key=>$val){
   $res[$key]    = explode(" -- ",$val);
}

echo "<pre>";
print_r($res);

输出:

Array
(
    [0] => Array
        (
            [0] => A1
            [1] => B1
        )

    [1] => Array
        (
            [0] => A2
            [1] => B2
        )

    [2] => Array
        (
            [0] => A3
            [1] => B3
        )

    [3] => Array
        (
            [0] => A1
            [1] => A2
        )

    [4] => Array
        (
            [0] => A2
            [1] => A3
        )

    [5] => Array
        (
            [0] => B2
            [1] => B3
        )

    [6] => Array
        (
            [0] => B1
            [1] => B3
        )

)

答案 2 :(得分:0)

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

$new = array();
foreach($data as $d){
$new[] = split(" -- ", $d);
}

var_dump($new);

给出:

array
  0 => 
    array
      0 => string 'A1' (length=2)
      1 => string 'B1' (length=2)
  1 => 
    array
      0 => string 'A2' (length=2)
      1 => string 'B2' (length=2)
 ... etc

答案 3 :(得分:0)

试试这个:

$newArray = array();
foreach($data as $key=>$value)
{
    $expArray = explode(' -- ', $value);
    $newArray[] = array($expArray[0], $expArray[1]);
}

$newArray

是最后一个数组。

我希望这会有所帮助。

答案 4 :(得分:0)

我会加入答案,因为我还是准备好了。

我还创建了一个自定义的foreach循环来迭代数组中的每个项目,然后将该项目(如果它是一个字符串)拆分成一个数组。

你也可以花费我写的函数来允许递归。例如,如果不是数组中的所有项都是字符串,但是如果某些项也是包含字符串的数组(您想要explode),则需要递归。

但是我在这个例子中遗漏了这个:

http://codepad.viper-7.com/xYjXur


<?php

function splitStringInArrayToArray ( $delimiter = ' -- ', array $array )
{
    foreach ( $array as &$item )
    {
        if ( is_array ( $item ) )
            throw new Exception("oh noes, problem");

        $item = explode ( $delimiter, $item );
    }

    return $array;
}

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3"
);

$new = splitStringInArrayToArray ( ' -- ', $data );

echo '<pre>';
print_r($new);
echo '</pre>';

答案 5 :(得分:0)

Try:
$result_array=array();

foreach($data as $val){
    $ex = explode(" -- ", $val);
    array_push($result_array,$ex);
}

print_r($result_array);