2016-08-10 4 views
0

моего PHP код этополучить значение массива из оператора цикла в JavaScript

$newArr = array(); 

$newArr['Item1']=$array1; 
$newArr['Item2']=$array2; 
$newArr['Item3']=$array3; 
$newArr['Item4']=$array4; 
$newArr['Item5']=$array5; 
$newArr['Item6']=$array6; 
$newArr['Item8']=$array8; 

echo json_encode($newArr); 

я хотел построить линейную диаграмму с chartjs с этими данными. так что схема будет выглядеть следующим образом ....

enter image description here

вот мой текущий код JS ......

$(document).ready(function(){ 
$.ajax({ 
    url : "http://localhost/clicklog/clicklog.php", 
    type : "GET", 
    success : function(newArr){ 
     //console.log(newArr.Item1); 


     Clicks1 = []; 
     Clicks2 = []; 
     Clicks3 = []; 
     Clicks4 = []; 
     Clicks5 = []; 
     Clicks6 = []; 
     Clicks8 = []; 

     for(var i in newArr){ 

      //console.log(newArr[i]); 

      for(var x in newArr[i]){ 
       //console.log(newArr[i][x]); 
       Clicks1.push(newArr[i][x]); 

      } 

     } 

     console.log(Clicks1); 

с этим кодом, моя переменная "Clicks1" имеет этот стоимость

[18948, 13783, 9484, 5468, 46267, 33511, 22824, 13204, 5378, 3773, 2564, 1586, 18076, 13252, 8979, 5394, 10273, 7139, 4713, 2632, 8812, 6326, 4465, 2751, 18083, 12924, 8886, 5354] 

который исходит из "newArray" без сортировки.

я хотел поставить значение в «вар clicks1» только для тех данных, что исходит от «пункта 1»

здесь является результатом моего кода PHP ..

{"Item1":{"2009-04-17":18948,"2009-04-18":13783,"2009-04-19":9484,"2009-04-20":5468}, 
"Item2":{"2009-04-17":46267,"2009-04-18":33511,"2009-04-19":22824,"2009-04-20":13204}, 
"Item3":{"2009-04-17":5378,"2009-04-18":3773,"2009-04-19":2564,"2009-04-20":1586}, 
"Item4":{"2009-04-17":18076,"2009-04-18":13252,"2009-04-19":8979,"2009-04-20":5394}, 
"Item5":{"2009-04-17":10273,"2009-04-18":7139,"2009-04-19":4713,"2009-04-20":2632}, 
"Item6":{"2009-04-17":8812,"2009-04-18":6326,"2009-04-19":4465,"2009-04-20":2751}, 
"Item8":{"2009-04-17":18083,"2009-04-18":12924,"2009-04-19":8886,"2009-04-20":5354}} 

спасибо за помощь

ответ

1

я хотел поставить значение в «вар clicks1» только для тех данных, что исходит от «пункта 1»

Вот как вы это делаете, но продолжайте читать:

var newArr = {"Item1":{"2009-04-17":18948,"2009-04-18":13783,"2009-04-19":9484,"2009-04-20":5468}, 
 
"Item2":{"2009-04-17":46267,"2009-04-18":33511,"2009-04-19":22824,"2009-04-20":13204}, 
 
"Item3":{"2009-04-17":5378,"2009-04-18":3773,"2009-04-19":2564,"2009-04-20":1586}, 
 
"Item4":{"2009-04-17":18076,"2009-04-18":13252,"2009-04-19":8979,"2009-04-20":5394}, 
 
"Item5":{"2009-04-17":10273,"2009-04-18":7139,"2009-04-19":4713,"2009-04-20":2632}, 
 
"Item6":{"2009-04-17":8812,"2009-04-18":6326,"2009-04-19":4465,"2009-04-20":2751}, 
 
"Item8":{"2009-04-17":18083,"2009-04-18":12924,"2009-04-19":8886,"2009-04-20":5354}}; 
 

 
var Clicks1 = []; 
 
var data1 = newArr.Item1; 
 
for (x in data1) { 
 
    Clicks1.push(data1[x]); 
 
} 
 
console.log(Clicks1);

... но тогда вы должны будете продолжать делать это для Clicks2 через Clicks7. Всякий раз, когда вы оказываетесь на любом языке программирования с такими переменными, как «var1, var2, var3, var4» и т. Д., Он говорит вам, что вместо этого вы хотите использовать массив .

Без дополнительного контекста нельзя сказать конкретно, как его изменить, потому что мы не знаем, что вы собираетесь делать с Clicks1 через Clicks7, но, скорее всего, вы захотите изменить PHP для работы с массивами (неассоциативный тип), а затем с использованием результирующих массивов в вашем JavaScript-коде.

Но для чего это стоит, это дает вам один массив с данными из каждого ItemX в существующий ответ, в порядке ItemX этикетке, в массиве называется allclicks:

var newArr = {"Item1":{"2009-04-17":18948,"2009-04-18":13783,"2009-04-19":9484,"2009-04-20":5468}, 
 
"Item2":{"2009-04-17":46267,"2009-04-18":33511,"2009-04-19":22824,"2009-04-20":13204}, 
 
"Item3":{"2009-04-17":5378,"2009-04-18":3773,"2009-04-19":2564,"2009-04-20":1586}, 
 
"Item4":{"2009-04-17":18076,"2009-04-18":13252,"2009-04-19":8979,"2009-04-20":5394}, 
 
"Item5":{"2009-04-17":10273,"2009-04-18":7139,"2009-04-19":4713,"2009-04-20":2632}, 
 
"Item6":{"2009-04-17":8812,"2009-04-18":6326,"2009-04-19":4465,"2009-04-20":2751}, 
 
"Item8":{"2009-04-17":18083,"2009-04-18":12924,"2009-04-19":8886,"2009-04-20":5354}}; 
 

 
// An array we'll put arrays inside 
 
var allclicks = []; 
 
// Loop through the items in alphabetical order 
 
Object.keys(newArr).sort().forEach(function(itemKey) { 
 
    // Get the item for this key 
 
    var item = newArr[itemKey]; 
 
    
 
    // Add an array to allclicks for this item's clicks 
 
    itemclicks = allclicks[allclicks.length] = []; 
 
    
 
    // Loop through this items dates to get the clicks 
 
    for (date in item) { 
 
    itemclicks.push(item[date]); 
 
    } 
 
}); 
 
console.log(allclicks);

Затем вы используете allclicks[0], allclicks[1] и т.д., а не Clicks1, Clicks2 и т.д.

+0

Ваше решение - это работа (y), вы здорово. извините, я совершенно новый с «кодированием» или также можно сказать о программировании. –

+0

@MuhammadFebrik: Рад, что это работает! Не нужно извиняться, мы все новые вещи все время. :-) –

+0

Я уже отмечаю это как ответ (y). хорошо сделанный сэр –

Смежные вопросы