用字符串在PHP中分解

用字符串在PHP中分解,php,arrays,Php,Arrays,我有一个字符串: 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

我有一个字符串:

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)

希望你能帮助我,谢谢

不确定数据类型是否匹配(我相信这都是一个字符串),但下面是代码

 $myarray = array();
 foreach(explode("&&",$mystring) as $key=>$val)
 {
 $myarray[] = explode(";",$val);
 }
explode命令获取一个字符串,并根据特定的“拆分键”将其转换为一个数组,在您的示例中,该键为&

但由于这是一个双数组,我必须通过一个foreach和另一个explode来解决它。

这非常简单。首先需要按
&&
分解字符串,然后遍历按
&&
分解的数组。并通过
分解数组中的每个元素

像这样,

<?php

$str="01;Tommy;32;Coder&&02;Annie;20;Seller";

$array=explode("&&",$str);

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

您只需在“&&”上拆分,然后按“;”拆分结果即可要创建新的二维阵列,请执行以下操作:

// $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保留为字符串只会持续时间取决于值的使用方式,然而,变量类型强制转换可以帮助验证数据并将错误类型的值保留在对象之外


祝你好运

还有另一种解决这个问题的方法。这里我使用了带有匿名函数的
array\u map()

$string = '01;Tommy;32;Coder&&02;Annie;20;Seller';

$result = array_map(function($value){return explode(';',$value);}, explode('&&', $string));

你在foreach中调用explode()的内容你需要放在循环外,只需在foreach中使用变量你不需要在循环外分解,除非你在做一个大集合。当然速度较慢,但是2元素数组上的0.0003秒对0.0004秒(外部对内部)并没有造成任何伤害。