如何在 PHP 中从字符串创建两个数组以进行 json 输出


How to create two arrays from String in PHP for json output

我想在MenuTable和SubMenuTable(循环中)中触发查询。

但是我的数据是字符串,如下所示:

"102_264,102_273,104_225,103_233,103_229,103_232,101_316,101_244,101_246,101_249"

这里 102_264menuId_subMenuId

  • 102 menuId
  • 264 subMenuId

所以,我想分开这个字符串,然后在上面的表中触发查询。我该怎么做?

您可以使用分解函数或使用列表,最后使用json_encode函数将其转换为 JSON 格式。这段代码将适用于你试试这个,

$str="102_264,102_273,104_225,103_233,103_229,103_232,101_316,101_244,101_246,101_249";
 $arrayComma = explode(',', $str);
 $menu = array();
 $subMenu = array();
 foreach($arrayComma AS $val){
      list($menu[], $subMenu[]) = explode('_', $val);
 }
 $json = array();
 $json=array("menu" => $menu, "submenu" => $subMenu);
 echo json_encode($json);

快乐编码..!

您正在寻找分解函数。

$array = explode($string,','); //Will contain array $array[0] = "102_264" etc
foreach($array as $arr){
   $explodedArr = explode($arr, '_');
   $menuId = $explodedArr[0]; //Contains 102
   $subMenuId = $explodedArr[1]; //Contains 264
}
$str='102_264,102_273,104_225,103_233,103_229,103_232,101_316,101_244,101_246,101_249';
$arr=array();
$arr=explode(',', $str);
for ($i=0; $i<sizeof($arr) ; $i++) 
{ 
    $arr2=array();
    $arr2=explode('_',$arr[$i]);
    $sql="select * from abc where menu_id=".$arr2[0]." and sub_menu_id=".$arr2[1]."";
    echo $sql."    ";
}

基本上你想分解字符串。3D阵列的快速方法:

$data = "102_264,102_273,104_225,103_233,103_229,103_232,101_316,101_244,101_246,101_249";
$result = [];
// retrieve array by splittting string with every comma
foreach(explode(',', $data) as $value) {
    // retrieve Ids by splitting string with underscore
    $serie = explode('_', $value);
    $result[] = array(
        'menuId' => $serie[0],
        'subMenuId' => $serie[1],
    );
}

您将将所有内容都放在单独的子数组中,以便轻松循环查询。

试试这个,它结合了爆炸和映射,在一行代码中为您提供数据。

$results = array_map(function($data){
    return explode("_",$data);
}, explode(",", $tmp));
foreach($results as $result){
    echo "menuId: " . $result[0]." subMenuId: ".$result[1]."<br />";
}

给你

menuId: 102 subMenuId: 264
menuId: 102 subMenuId: 273
menuId: 104 subMenuId: 225
menuId: 103 subMenuId: 233
menuId: 103 subMenuId: 229
menuId: 103 subMenuId: 232
menuId: 101 subMenuId: 316
menuId: 101 subMenuId: 244
menuId: 101 subMenuId: 246
menuId: 101 subMenuId: 249