2

2つの別々のMySQL選択から多次元配列を作成しようとして、大きな頭痛の種です....私はこことGoogleを一日中検索しており、最終的に敗北を認め、助けを求める必要があります(私も初心者です)これは役に立ちません!!!)。

ID ごとに 1 つの行の結果を含むテーブルと、ID の複数の行を含むことができるテーブルの 2 つのテーブルがあります。私がやろうとしているのは、2 つを組み合わせて多次元配列にすることです。

私のコードは(貧弱かもしれませんが)次のようになります。

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"}]

とにかく、各 ID の最初の SQL Select に 2 番目の SQL Select を挿入するにはどうすればよいですか。

アドバイス/ヘルプをありがとう。

編集

W3Schools.com からの抜粋:

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

上記のように動作させようとしています。

4

2 に答える 2

5

ここで少しクリエイティブになる必要があります。次のようなものは、多次元データとの結合 AND として機能します。

<?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"
  }
]
于 2013-02-23T21:01:30.777 に答える
1

最初の配列の ID がある場合、2 番目の配列でこの ID を使用してキー/値を確認できます。

キーを取得したい場合は、使用する必要があります

array_key_exists($string)

そして、値を取得したい場合は、使用する必要があります

in_array($string)

foreach ループを使用してこの関数を実行できます。

于 2013-02-23T20:46:22.557 に答える