【问题标题】:Dynamic tree with PHP and jTree使用 PHP 和 jTree 的动态树
【发布时间】:2020-07-13 12:19:38
【问题描述】:

我正在尝试寻找另一个解决这个问题的方法here

我尝试使用 jSon Tree 库来编码我的关联数组,但由于某种原因,结果 jSon 格式错误,我不知道该怎么办......我的 PHP 代码如下。

<?php
$trenino = array();

foreach ($hTwo as $k => $html_val) {
  if ($k < 2) continue;

  $new_string = explode('|',$html_val->nodeValue);

  $padre = $new_string[0]; //echo '<p>padre: '.$padre.'</p>';
  $figlio = $new_string[1]; //echo '<p>figlio: '.$figlio.'</p>';
  $desc = $new_string[2]; //echo '<p>desc: '.$desc.'</p>';
  $colore = $new_string[3]; //echo '<p>colore: '.$colore.'</p>';
  $lt = $new_string[4]; //echo '<p>lt: '.$lt.'</p>';
  $pallino = $new_string[5];
  $magazz = $new_string[6]; //echo 'magazzino: '.$magazz;

  $trenino['parent'][] = $new_string[0];
  $trenino['id'][] =  $new_string[1];
  $trenino['name'][] =  $new_string[2];
  $trenino['colore'][] = $new_string[3];
  $trenino['lt'][] = $new_string[4];
  $trenino['pallino'][] = $new_string[5];
  $trenino['magazz'][] = $new_string[6];

echo json_encode($trenino);
?>

这是我的 json 结果的一部分:

{"parent":[""],"id":["MY00027770096"],"name":["REJANE 85MM BOTTONE E CHIAVE "],"colore":["50FF15"],"lt":["0"],"pallino":[""],"magazz":["NP"]}

【问题讨论】:

    标签: php arrays json string web-services


    【解决方案1】:

    在您的代码中添加一个计数器,将您的所有信息归为一个。

    <?php
    $trenino = array();
    $count = 0;
    
    foreach ($hTwo as $k => $html_val) {
      if ($k < 2) continue;
    
      $new_string = explode('|',$html_val->nodeValue);
    
      $padre = $new_string[0]; //echo '<p>padre: '.$padre.'</p>';
      $figlio = $new_string[1]; //echo '<p>figlio: '.$figlio.'</p>';
      $desc = $new_string[2]; //echo '<p>desc: '.$desc.'</p>';
      $colore = $new_string[3]; //echo '<p>colore: '.$colore.'</p>';
      $lt = $new_string[4]; //echo '<p>lt: '.$lt.'</p>';
      $pallino = $new_string[5];
      $magazz = $new_string[6]; //echo 'magazzino: '.$magazz;
    
      $trenino[$count]['parent'] = $new_string[0];
      $trenino[$count]['id'][] =  $new_string[1];
      $trenino[$count]['name'][] =  $new_string[2];
      $trenino[$count]['colore'][] = $new_string[3];
      $trenino[$count]['lt'][] = $new_string[4];
      $trenino[$count]['pallino'][] = $new_string[5];
      $trenino[$count]['magazz'][] = $new_string[6];
      $count++;
    
    echo json_encode($trenino);
    ?>
    

    根据 cmets 编辑:

    视觉(来自Makiweb 示例的输出):

    视觉(实际):

    不同之处在于它们按预期中的第一个数字[0][1] 等组合在一起。在前面添加$count 变量将为您生成。

    【讨论】:

    • {"parent":["","MY00027770096","MY0002_0096_777_I01"],"id":["MY00027770096","MY0002_0096_777_I01","355-0676-221"],"name":["REJANE 85MM BOTTONE E CHIAVE ","REJANE 85MM BOTTONE E CHIAVE","PELLICOLA C\/PIASTRA AGGANCIATU"],"colore":["50FF15","FFC911","4274F4"],"lt":["0","0","0"],"pallino":["","",""],"magazz":["NP","NP1","NP91Q"]}
    • 信息已经分组在 $trenino 数组中,问题是当我调用 json_encode($trenino); jSon 结果与本教程link 中的结果不同,并且 jTree 不加载任何内容...对我来说,结果 jSon 就像上面的这个...
    • 我已经更新了我的答案。您仍然需要在其中添加 $count 以按数字而不是单个元素对它们进行分组。
    • 跟进。你是怎么弄出来的?
    • 嘿,你好,我的朋友,请看下面我的回答,希望不要太咄咄逼人,我只是想再问你一件事......你有没有用过这种树库here 我不太明白如何设置该库...
    【解决方案2】:

    谢谢,但我采用了另一种方式,因为我需要来自我的 JSON 数据的真实 ID。我已经建立了一个修改关联数组的字符串,然后操纵我的字符串以获得正确的 jSon 数据字符串,让 jsTree 从中读取。看看吧!

    <?php
    $trenino = array();
    
    $custom_attr ='';
    $json_string = '';
    
    foreach ($hTwo as $k => $html_val) {
      if ($k < 2) continue;
      //echo $html_val->nodeValue;
      $new_string = explode('|',$html_val->nodeValue);
    
      $padre = $new_string[0]; //echo '<p>padre: '.$padre.'</p>';
      $figlio = $new_string[1]; //echo '<p>figlio: '.$figlio.'</p>';
      $desc = $new_string[2]; //echo '<p>desc: '.$desc.'</p>';
      $colore = $new_string[3]; //echo '<p>colore: '.$colore.'</p>';
      $lt = $new_string[4]; //echo '<p>lt: '.$lt.'</p>';
      $pallino = $new_string[5];
      $magazz = $new_string[6]; //echo 'magazzino: '.$magazz;
    
      $trenino['id'] =  $new_string[1];
      $trenino['parent'] = $new_string[0];
    
      $custom_attr =  '<span class="itmref">'.$new_string[1].'</span> <span class="itmdes">'.$new_string[2].'</span><span class="hide colore">'.$new_string[3].'</span><span class="lt">'.$new_string[4].' gg</span><span class="hide pallino">'.$new_string[5].'</span><span class="hide magazz">'.$new_string[6];
      $trenino['text'] = $custom_attr;
    
    
    
      $json_string .= json_encode($trenino);
    
    
    }
    
    //echo '<pre>',print_r($trenino),'</pre>';
    
    /*
    foreach($trenino as $special_item) {
        echo '<p>'; var_dump($special_item); '</p>';
    }*/
    
    $json_string = '['.$json_string.']';
    
    $json_string = str_replace('"parent":"",','"parent":"#",',$json_string);
    $json_string = str_replace('}{','},{',$json_string);
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多