Многомерный массив PHP MYSQL

У меня серьезные головные боли, пытающиеся создать многомерный массив из двух отдельных вариантов выбора MySQL … Я целый день искал здесь и Google и должен наконец признать поражение и попросить о помощи (я тоже новичок что не помогает !!!).

У меня есть две таблицы, одна из которых содержит результат одной строки на один идентификатор и другой, который может содержать несколько строк для идентификатора. То, что я пытаюсь сделать, это объединить эти два в многомерный массив.

Мой код (как бы это ни было плохо) выглядит следующим образом:

require 'php/phpConnection.php'; $sqlString1 = mysql_query("SELECT id FROM supportstaff_section1_a"); $firstArray = array(); $secondArray = array(); while ($r = mysql_fetch_assoc($sqlString1)) { $applicantID = $r['id']; $sqlString2 = mysql_query("SELECT educationalname FROM supportstaff_section5 WHERE id = '$applicantID'"); while ($x = mysql_fetch_assoc($sqlString2)) { $secondArray[] = $x; } $firstArray[] = $r + $secondArray; $secondArray = array(); } print json_encode($firstArray); mysql_close($con); 

В результате получается следующее:

 [{"id":"8m8wwy","0":{"educationalname":"GCSE - English"},"1":{"educationalname":"GCSE - Maths"}},{"id":"wiL7Bn"},{"id":"zAw6M1"}] 

Но я думаю, что это должно выглядеть примерно так:

 [{"id":"8m8wwy","Array2":"[{"educationalname":"GCSE - English"},{"educationalname":"GCSE - Maths"}]"},{"id":"wiL7Bn"},{"id":"zAw6M1"}] 

Во всяком случае, как я могу вставить второй SQL Select в мой первый SQL Select для каждого ID.

Спасибо за любой совет / помощь.

РЕДАКТИРОВАТЬ

Взято с W3Schools.com:

 Array ( [Griffin] => Array ( [0] => Peter [1] => Lois [2] => Megan ) [Quagmire] => Array ( [0] => Glenn ) [Brown] => Array ( [0] => Cleveland [1] => Loretta [2] => Junior ) ) 

Я пытаюсь заставить его работать, как указано выше.

Здесь вам нужно немного поработать. Что-то вроде следующего будет работать как объединение И с многомерными данными:

 <?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); ?> с <?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); ?> 

И получившаяся $ jsondata будет выглядеть так (но не так разгадана, конечно):

 [ { "id": "8m8wwy", "educationalnames": ["GCSE - English", "GCSE - Maths"] }, { "id": "wiL7Bn" }, { "id": "zAw6M1" } ] 

Если у вас есть идентификатор из первого массива, вы можете проверить ключи / значения с этим идентификатором во втором массиве.

Если вы хотите получить ключ, вы должны использовать

 array_key_exists($string) 

И если вы хотите получить значение, которое вы должны использовать

 in_array($string) 

Вы можете использовать цикл foreach для выполнения этих функций!