2

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

这是我的数组的结构:

$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是最好的方法,所以我愿意接受建议。

谢谢

4

6 回答 6

4

尝试:

foreach($data as $k => $c){
    $data[$k] = explode(" -- ", $c);
}
于 2013-03-07T11:02:42.067 回答
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
        )

)
于 2013-03-07T11:03:26.710 回答
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
于 2013-03-07T11:03:32.800 回答
0

试试这个:

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

$newArray

是最终的数组。

我希望这会有所帮助。

于 2013-03-07T11:05:06.540 回答
0
Try:
$result_array=array();

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

print_r($result_array);
于 2013-03-07T11:11:07.557 回答
-1

我会加入答案,因为无论如何我已经准备好了。

我还创建了一个自定义 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>';
于 2013-03-07T11:08:54.513 回答