Данные за текущий год из таблицы в соответствии с месячной записью

#php #javascript #mysql

#php #javascript #mysql

Вопрос:

у меня есть этот запрос, который отлично работает….

  $result        =   mysql_query(SELECT Month(ord_aff_date) AS saleMonth, ROUND(SUM(ord_aff_amount),0) AS Total 
                FROM order_affiliate_details 
                WHERE aff_id='12' AND YEAR(ord_aff_date)=YEAR(CURDATE())
                GROUP BY Month(ord_aff_date) ORDER BY Month(ord_aff_date)");

while($datas    =   mysql_fetch_array($result)){
    $months[]=$datas['saleMonth'];
    $value[]=   $datas['Total'];
}

print_r($months); exit;
  

И результат, приведенный ниже, и не по всем месяцам, показывает … что правильно..

  Result => Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 ) 
  

Теперь я хочу получить массив значений, подобный этому.

 Array(['January', 437], ['February', 322], ['March', 233], ['April', 110], ['May', 34], ['June', 20], ['July', 19], ['August', 110], ['September', 34], ['November', 20], ['December', 19],);
  

как массив js . . но теперь я застрял, как это сделать …. кто-нибудь может мне помочь ….??

Решение:

 // As i want to get these data as a json encoded and also in another array, 
// but with out square brackets at the end.. so now i find the solution which 
// is fit in as js library want...

$final = array_combine($arr_monthName,$values);
    $allMonths = array();
    $i=0;
    foreach($final as $k=>$v)
    {   
        $allMonths[$i]=array($k,$v);
        $i  ;
    } 

    // then do json_encode
    $json = json_encode($allMonths);
    $json = preg_replace('/^[|]$/', '', $json);

 // answer return as....
 => ['January', 437], ['February', 322], ['March', 233], ['April', 110], ['May', 34]

 // which then i pass to a js array.... simply.
 var arrayData = new Array(<?=$json?>);

 // many many thanks to diEcho, which help me to get this... thanks.
  

Комментарии:

1. в настоящее время вы получаете вывод, подобный этому array(0=>array('saleMonth'=>'January','total=>437), 1=>array('saleMonth'=>'February','total=>322) ... ) , верно??

2. НЕТ, это не так …. только номер показа за месяц, а не название,,, и оплата за каждый месяц…. Поскольку я хочу добиться этого, как ваш запрос, а затем в json, чтобы передать переменную javascript.

Ответ №1:

если я понимаю вашу проблему, то я думаю, что в настоящее время вы получаете вывод, подобный этому

 $output = array(0=>array('saleMonth'=>'January','total=>437),
                1=>array('saleMonth'=>'February','total=>322). ... )
  

Обновить

 // first create an array having key as month name and value as total
// suppose we have below array

$monthArray = array( 0=>2, 1 =>3, 2=> 4, 3=>5 );
$valueArray = array( 0=>437,1=>322, 2=>233,4=>458);
function intToMonth($monthNumber)
{
    $strTime=mktime(1,1,1,$monthNumber,1,date("Y"));
    return date("F",$strTime);  
}
$arr_monthName= array_map('intToMonth',$monthArray);    
$final = array_combine($arr_monthName,$valueArray);
//final array would be 

 Array
(
    [February] => 437
    [March] => 322
    [April] => 233
    [May] => 458
)
// then do json_encode
json_encode($final);
//output would be in below format, Associative array always output as object:
{"February":437,"March":322,"April":233,"May":458}
  

дополнительные обновления

чтобы получить выходные данные в виде массива array, попробуйте

 $new = array();
$i=0;
foreach($final as $k=>$v)
{   
    $new[$i]=array($k,$v);
    $i  ;
}
json_encode($new);
//output would be in below format , array of array
[["February",437],["March",322],["April",233],["May",458]]
  

Ссылка

Комментарии:

1. будете ли вы обновлять свой вопрос, указав, что именно является результатом??

2. Я обновил свой вопрос, пожалуйста, посмотрите его … и поставьте оценки выше .. плз.

3. я также обновляю свой ответ. смотрите .. надеюсь, что это поможет вам также проголосовать за :).

4. @diEcho, ты сделал фантастически, это потрясающе …… полностью то, что я хочу… но как вы понимаете мою проблему и даете этот результат, в то время как другие не понимают этого…..

5. все в порядке, но не может работать с библиотекой js, для которой требуется массив, подобный в моем вопросе последнему массиву типа js …. можем ли мы получить json из php array для подобного… и еще раз спасибо…

Ответ №2:

Вы хотели бы использовать json_encode для вывода массива JS.