PHP,
pasted
on Oct 29:
|
<?php
function getConcatList($arrList=array(), $strList=NULL) {
$group = "GROUP_CONCAT(if(optionid = %d, value_name, NULL)) AS `%s`";
if (!is_string($arrList) && !is_numeric($arrList) && !is_array($arrList)) {
return '';
} else if (is_string($arrList) || is_numeric($arrList) && !empty($arrList)) {
$arrList = array($arrList);
}
$groups = array(
1 => 'Color',
2 => 'Size',
18 => 'Length',
20 => 'Ring Size',
22 => 'Crystal Color',
24 => 'Rack',
25 => 'Gauge',
26 => 'Pincher Size',
33 => 'Pieces in Pack',
34 => 'Size in Pack',
35 => 'Height'
);
$c_list = array_shift($arrList);
if ($groups[$c_list]) {
$c_strList = sprintf($group, $c_list, $groups[$c_list]);
if (strlen($strList)) {
$c_strList = "$strList, $c_strList";
}
} else {
$c_strList = $strList;
}
if (!count($arrList)) {
return $c_strList;
}
return getConcatList($arrList, $c_strList);
}
echo getConcatList(22)."\n\n";
echo getConcatList(50)."\n\n";
echo getConcatList(array(35, 33))."\n\n";
echo getConcatList(array(1, 18, 35, 33))."\n\n";
echo getConcatList(array(1, 18, 70, 35, 33))."\n\n";
?>
|
Output:
|
GROUP_CONCAT(if(optionid = 22, value_name, NULL)) AS `Crystal Color`
GROUP_CONCAT(if(optionid = 35, value_name, NULL)) AS `Height`, GROUP_CONCAT(if(optionid = 33, value_name, NULL)) AS `Pieces in Pack`
GROUP_CONCAT(if(optionid = 1, value_name, NULL)) AS `Color`, GROUP_CONCAT(if(optionid = 18, value_name, NULL)) AS `Length`, GROUP_CONCAT(if(optionid = 35, value_name, NULL)) AS `Height`, GROUP_CONCAT(if(optionid = 33, value_name, NULL)) AS `Pieces in Pack`
GROUP_CONCAT(if(optionid = 1, value_name, NULL)) AS `Color`, GROUP_CONCAT(if(optionid = 18, value_name, NULL)) AS `Length`, GROUP_CONCAT(if(optionid = 35, value_name, NULL)) AS `Height`, GROUP_CONCAT(if(optionid = 33, value_name, NULL)) AS `Pieces in Pack`
|
|