Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP数组创建二维javascript数组_Php_Javascript_Arrays - Fatal编程技术网

从PHP数组创建二维javascript数组

从PHP数组创建二维javascript数组,php,javascript,arrays,Php,Javascript,Arrays,如何制作此PHP数组: array(12) { [0]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "8" ["name"]=> string(10) "Accounting" ["main_category_id"]=> string(1) "1" } } [1]=> array(1) { ["SubCategory"]=> array(3) { ["id

如何制作此PHP数组:

 array(12) {
    [0]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "8" ["name"]=> string(10) "Accounting" ["main_category_id"]=> string(1) "1" } } 
    [1]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(17) "Applications" ["main_category_id"]=> string(1) "2" } } 
    [2]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "2" ["name"]=> string(19) "Benefit Claims" ["main_category_id"]=> string(1) "2" } } 
    [3]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(22) "Evaluations" ["main_category_id"]=> string(1) "2" } } 
    [4]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "4" ["name"]=> string(11) "Leave Forms" ["main_category_id"]=> string(1) "2" } } 
    [5]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "5" ["name"]=> string(13) "Payroll" ["main_category_id"]=> string(1) "2" } } 
    [6]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "6" ["name"]=> string(17) "Recruitment" ["main_category_id"]=> string(1) "2" } } 
    [7]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "7" ["name"]=> string(24) "Training" ["main_category_id"]=> string(1) "2" } } 
    [8]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(1) "9" ["name"]=> string(13) "Staff" ["main_category_id"]=> string(1) "2" } } 
    [9]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(2) "10" ["name"]=> string(14) "Codes" ["main_category_id"]=> string(2) "3" } } 
    [10]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(2) "11" ["name"]=> string(28) "Reports" ["main_category_id"]=> string(2) "3" }
    [11]=> array(1) { ["SubCategory"]=> array(3) { ["id"]=> string(2) "12" ["name"]=> string(14) "Plan" ["main_category_id"]=> string(2) "4" } } 
    }
在javascript中如下所示:

var SubCat[
["Accounting"],
["Applications","Benefit Claims","Evaluations","Leave Forms","Payroll","Recruitment","Training","Staff"],
["Codes","Reports"],
["Plan"]
];
我尝试了几种不同的php:

<?php
    $jsArray = array();
    foreach($data as $row) {
        $jsArray[] = array($row['SubCategory']['name']);
    }
    echo json_encode($jsArray);
    ?>

我也试过:

<?php 
     echo "[";
     foreach($data as $row){
        foreach($row as $subcat) {
            echo "\"" . $subcat['name'] . "\",";
           }
     }echo "]";
?>


我做错了什么?

正如我上面所说,您的json_编码示例非常接近。您只需要在主类别id下引入第二个维度

<?php
$data = array(
    array("SubCategory"=> array("id"=>"8", "name"=>"Accounting","main_category_id"=>"1")),
    array("SubCategory"=> array("id"=>"1", "name"=>"Applications","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"2", "name"=>"Benefit Claims","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"3", "name"=>"Evaluations","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"4", "name"=>"Leave Forms","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"5", "name"=>"Payroll","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"6", "name"=>"Recruitment","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"7", "name"=>"Training","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"9", "name"=>"Staff","main_category_id"=>"2")),
    array("SubCategory"=> array("id"=>"10", "name"=>"Codes","main_category_id"=>"3")),
    array("SubCategory"=> array("id"=>"11", "name"=>"Reports","main_category_id"=>"3")),
    array("SubCategory"=> array("id"=>"12", "name"=>"Plan","main_category_id"=>"4")),
);
$selected = 7;

$js = array();

foreach($data as $sub){
    //get the parent id (main_category_id)
    $parent = $sub['SubCategory']['main_category_id'];
    //if the parent doesn't exist, add it
    if(!isset($js[$parent])){
        //add array with name and id
        $js[$parent] = array(array('id'=>$sub['SubCategory']['id'],'name'=>$sub['SubCategory']['name']));
    //parent does exist
    } else {
        //append this entry name and id
        $js[$parent][] = array('id'=>$sub['SubCategory']['id'],'name'=>$sub['SubCategory']['name']);
    }
}

echo json_encode($js);

乍一看,您的
json_encode
方法看起来实际上是正确的。你能把你两次尝试的结果都贴出来吗?首先,出于种种原因,你一定要选择
json\u编码方式。第二,我不理解输入格式。它看起来像某种序列化PHP?json_编码非常接近正确,只是您还需要添加另一个维度,即主_category_id。另外,在提供的数据中,最后一个条目的主_category_id为4,但是预期的结果是将其分组为3。我还需要获取子类别id并将其作为SubCategory.name放入。有什么想法吗?@sloga我更新了代码以存储一个选项列表,这些选项可以在标记之间进行回显。我应该告诉你我的方向。在我的函数makeSubCatHtml(catId)中,我需要将SubCategory.id放入SubCatHtml+=…那么您可能需要将每个附加的名称放入另一个包含id和名称的数组中。我会更新的。谢谢你的更新。我对它做了一些调整,因为索引已经关闭,并且正在运行-非常感谢!