我有一个字符串:
01;托米; 32;编码器&安培;&安培; 02;安妮; 20;卖方
我想这样:
array (size=2)
0 =>
array (size=4)
0 => string '01' (length=2)
1 => string 'Tommy' (length=5)
2 => int 42
3 => string 'Coder' (length=5)
1 =>
array (size=4)
0 => string '02' (length=2)
1 => string 'Annie' (length=5)
2 => int 20
3 => string 'Seller' (length=6)
希望你能帮助我,谢谢你!
答案 0 :(得分:5)
不确定数据类型是否匹配(因为我相信它全部在字符串中)但是这里是代码
$myarray = array();
foreach(explode("&&",$mystring) as $key=>$val)
{
$myarray[] = explode(";",$val);
}
explode命令接受一个字符串,并根据某个< split键'这是&&在你的情况下 但由于这是一个双阵列,我不得不通过一个foreach传递它,另一个爆炸来解决。
答案 1 :(得分:3)
答案 2 :(得分:3)
你应该只需要拆分'&&',然后将结果拆分为';'创建新的二维数组:
// $string = '01;Tommy;32;Coder&&02;Annie;20;Seller';
// declare output
$output = [];
// create array of item strings
$itemarray = explode('&&',$string);
// loop through item strings
foreach($itemarray as $itemstring) {
// create array of item values
$subarray = explode(';',$itemstring);
// cast age to int
$subarray[2] = (int) $subarray[2]; // only useful for validation
// push subarray onto output array
$output[] = $subarray;
}
// $output = [['01','Tommy',32,'Coder'],['02','Annie',20,'Seller']];
请记住,因为php变量没有输入,所以将字符串转换为int或将int保持为字符串只会依赖于值的使用方式,但是变量类型转换可以帮助验证数据并保持错误的值类型超出你的对象。
祝你好运!答案 3 :(得分:0)
还有另一种方法可以解决这个问题。在这里,我使用array_map()
匿名函数:
$string = '01;Tommy;32;Coder&&02;Annie;20;Seller';
$result = array_map(function($value){return explode(';',$value);}, explode('&&', $string));