Добавить части массива php mysql вместе в маленькие связки?Оставить другие части этого же массива? - PullRequest
0 голосов
/ 01 сентября 2011

Как я могу изменить приведенный ниже код, чтобы каждая часть складывалась в небольшую связку, а не смешивалась вместе? Если на экране отображается небольшая часть 123, она должна добавить 12 + 3 и отобразить 15 вместо 123. Я пробовал sum_array и другие вещи, но не получится добавить ЧАСТИ с другими ЧАСТЯМИ в небольших пакетах. Я могу только заставить его отображать сглаженные результаты, как показано ниже, или добавлять неправильные части или все остальное другими способами.

 $data = mysql_query('SELECT weight FROM my_table WHERE session_id = "' . session_id() . '"'); 
    $params = array();
    while ($row = mysql_fetch_assoc($data)) {     
    $params[] = $row['weight']; 
    }
    $combinations=getCombinations($params);
    function getCombinations($array)
    {
        $length=sizeof($array);
        $combocount=pow(2,$length);
    for ($i=1; $i<$combocount; $i++)
        {
    $binary = str_pad(decbin($i), $length, "0", STR_PAD_LEFT);
            $combination='';
            for($j=0;$j<$length;$j++)
            {
                if($binary[$j]=="1")
                    $combination.=$array[$j];
            }
            $combinationsarray[]=$combination;
     echo $combination . "&lt;br&gt;"; 
        }
        return $combinationsarray;
    } 

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Если я понимаю, что вы пытаетесь сделать, я думаю, что вы хотите использовать сложение + вместо конкатенации . в следующей строке:

if($binary[$j]=="1")
    $combination += $array[$j];
0 голосов
/ 01 сентября 2011

Похоже,

$combination.=$array[$j];

это ваша проблема.в PHP используется для конкатенации строк, а не математики.Поскольку PHP является языком со свободной типизацией данных, вы говорите PHP, что нужно взять строковое значение $ array [$ j] и ". =" (Добавить) его в комбинацию $, что дает вам проблему 12. = 3 == "123" ине 15, как то, что вы хотите.Вместо этого вы должны попробовать + =.

...