我不知道如何做到这一点,它可能会使用爆炸,但这并不是我想要的。
说我有一个字符串:
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”的内容
我尝试过一些搜索,但无法找到可以返回特定于数组的字符串的内容。
答案 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
)
答案 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"
}
*/