2017-10-10 14 views
0

美好的一天,创建数据的多维数组不会产生阵列上的JavaScript

我只是困惑,为什么我的数据结构犯规渲染阵列,其显示的对象列表,而不是,下面的代码的目的是存储的天在阵列结构几个月,

$calendar = []; 
for ($m=1; $m<=12; $m++) { 
    $s=date ("w", mktime (0,0,0,$month,1,$year)); 

    for ($ds=1;$ds<=$s;$ds++) { 

    $row_day = new stdClass(); 
    $row_day->day = $d; 
    $row_day->is_holiday = $is_holiday; 
    $row_day->is_paydate = $is_paydate; 
    //day of the week 
    $row_day->dotw = date("w",mktime (0,0,0,$month,$d,$year)); 
    $row_day->is_funds_due = $is_funds_due; 

    $calendar[$m][] = $row_day; 

    } 

} 

echo json_encode(array('type'=>2,'data'=>$calendar)); 

但是当我CONSOLE.LOG在我的JS它产生的这种结构..这显然不是一个数组.. enter image description here

我错了建设我的结构?

它只是它更容易操纵,如果它的阵列模式。因为你可以只使用data.length,但在我的情况下它不工作。

感谢您的阅读,祝您有美好的一天!

+0

啊,我就可以相应地格式化 – melvnberd

+0

我不是一个PHP的人,但你不能只使用'json_encode($ calendar)'?你似乎在用调用'array()'的参数来创建一个对象而不是一个数组。 – nnnnnn

+0

我实际上需要在我的返回值上添加额外条件的参数..我真的认为我需要的可能只是我还不知道如何实现此目标..感谢无论如何传递.. – melvnberd

回答

1

使用阵列相反性病类的(它是一个对象)只是在响应类型识别

$calendar = []; 
for ($m=1; $m<=12; $m++) { 
    $s=date ("w", mktime (0,0,0,$month,1,$year)); 

    for ($ds=1;$ds<=$s;$ds++) { 
     $row_day = array(); 
     $row_day['day'] = $d; 
     $row_day['is_holiday'] = $is_holiday; 
     $row_day['is_paydate'] = $is_paydate; 
     //day of the week 
     $row_day['dotw'] = date("w",mktime (0,0,0,$month,$d,$year)); 
     $row_day['is_funds_due'] = $is_funds_due; 

     $calendar[$m] = $row_day; 
    } 
} 

echo json_encode(array('type'=>2,'data'=>$calendar)); 
1

stdClass()an object,而不是一个数组。

有一个简单的(懒惰?)的方式把你的对象,并把它变成一个数组发现here

另一种选择将是实例您的数据摆在首位的数组。

$row_day['day'] = $d; 
$row_day['is_holiday'] = $is_holiday; 
$row_day['is_paydate'] = $is_paydate;