用数组分隔字符串


Separate string by array

我不知道如何做到这一点,它可能会使用爆炸,但这不完全是我想要的。

假设有一个字符串:

a,1,1,0,0;0,1,1,0,0;r,1,1,0,0;

我有一个数组

a = atv
p = 330c
U = blista
c = BMW
D = bobcat
r = charger

我希望当它作为一个函数在字符串上被调用时比如seperateString($string);它会返回类似"atv, charger"的东西

我已经尝试了一些搜索,但无济于事,我发现了一些东西,将返回一个字符串特定的数组。

试试这个:

$string = "a,1,1,0,0;0,1,1,0,0;r,1,1,0,0;";
$array = array('a' => 'atv',
  'p' => '330c',
  'U' => 'blista',
  'c' => 'BMW',
  'D' => 'bobcat',
  'r' => 'charger');
function separateString($array, $string) {
  $result = array();
  $chunks = preg_split('/[,;]/', $string);
    foreach ($chunks as $chunk) {
    if (array_key_exists($chunk, $array)) {
      $result[] = $array[$chunk];
    }
  }
  return $result;
}
print_r(separateString($array, $string));

输出:

Array
(
    [0] => atv
    [1] => charger
)

codepad示例

你发布的信息不是很好,但这是一个开始:

$string = "a,1,1,0,0;0,1,1,0,0;r,1,1,0,0;";
class Utility
{
    protected static $classes = array(
        'a' => 'atv',
        'p' => '330c',
        'U' => 'blista',
        'c' => 'BMW',
        'D' => 'bobcat',
        'r' => 'charger'
    );    
    public static function separateString($string)
    {
        $groups = explode(';', $string);
        foreach ($groups as $group) {
            $classId = array_shift(explode(',', $group));
            if (array_key_exists($classId, self::$classes)) {
                $classes[] = self::$classes[$classId];
            }
        }
        return (isset($classes)) ? $classes : array();    
    }
}

$classes = Utility::separateString($string);
var_dump($classes);
/*
array(2) {
[0]=>
string(3) "atv"
[1]=>
string(7) "charger"
}
*/