[ create a new paste ] login | about

Link: http://codepad.org/jsIFpWkt    [ raw code | output | fork ]

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:
1
2
3
4
5
6
7
8
9
10
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`



Create a new paste based on this one


Comments: