基本上我有一个数组有几个字符串作为值(不是关联数组)。我需要获取每个字符串的特定部分并将其转换为具有两个值的数组。
这是我的数组的结构:
$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
是最好的方法,所以我愿意接受建议。
由于
答案 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);