按数组分隔字符串

时间:2011-12-09 22:12:06

标签: php

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

说我有一个字符串:

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”的内容

我尝试过一些搜索,但无法找到可以返回特定于数组的字符串的内容。

2 个答案:

答案 0 :(得分:2)

试试这个:

$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 example

答案 1 :(得分:0)

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

$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"
}
*/