PHP MYSQL multidimensional array

前端 未结 2 503
挽巷
挽巷 2021-01-22 19:34

I\'m having major headaches trying to create a multidimensional array from two separate MySQL selects.... I\'ve been searching here and Google all day and have to finally admit

相关标签:
2条回答
  • 2021-01-22 20:10

    You need to get a little creative here. Something like the following would work as a join AND with multi-dimensional data:

    <?php
      require 'php/phpConnection.php';
    
      // ======================================================================
      // Create a join query (way faster than several separate ones!)
      $sqlquery =
        "SELECT SSSA.id, SSS5.educationalname" .
        " FROM supportstaff_section1_a SSSA" .
          " LEFT OUTER JOIN supportstaff_section5 SSS5 ON SSS5.id = SSSA.ID";
    
    
      // ======================================================================
      // Run the query and get our results
      $resultarray = array();
      if ($resource = mysql_query($sqlquery)) {
        while ($curarray = mysql_fetch_assoc($resource)) {
          // Create an array, if it doesn't exist
          if (!isset($resultarray[$curarray["id"]]))
            $resultarray[$curarray["id"]] = array();
    
          // Add to the array, if not null
          $curstring = (string) $curarray["educationalname"];
          if ($curstring != "")
            $resultarray[$curarray["id"]][] = $curstring;
        }
        mysql_free_result($resource);
      }
    
    
      // ======================================================================
      // Convert from a keyed array to a standard indexed array (0, 1, 2, etc.)
      $finalarray = array();
      foreach ($resultarray as $id => & $data) {
        // Start with just ID
        $newarray = array(
          "id" => $id
        );
    
        // Get the data, if we have any
        if (count($data))
          $newarray["educationalnames"] = & $data;
    
        // Add to our final array and clear the newarray
        $finalarray[] = & $newarray;
        unset($newarray);
      }
    
    
      // ======================================================================
      // Get the JSON of our result
      $jsonresult = json_encode($finalarray);
    
    
      // ======================================================================
      // Echo it to test
      echo $jsonresult;
    
    
      // ======================================================================
      // Close the database
      mysql_close($con);
    ?>
    

    And the resulting $jsondata would look like this (but not so unravelled of course):

    [
      {
        "id": "8m8wwy",
        "educationalnames": ["GCSE - English", "GCSE - Maths"]
      },
      {
        "id": "wiL7Bn"
      },
      {
        "id": "zAw6M1"
      }
    ]
    
    0 讨论(0)
  • 2021-01-22 20:17

    If you have an ID from the first Array, you can check for keys / values with this ID in the second Array.

    If you want to get the key you should use

    array_key_exists($string)
    

    And if you want to get the value you should use

    in_array($string)
    

    You can use a foreach loop to execute this functions!

    0 讨论(0)
提交回复
热议问题