10

特定のmysqlテーブルからの動的キーと動的値を使用して、PHPで連想配列を作成したいと考えています。

テーブル名には、それぞれ とmonthly_salaryという名前の 2 つの列がmonthありsalaryます。

その中のデータを取得します:

$sql = mysql_query('SELECT * FROM monthly_salary');
$sql2 = mysql_query('SELECT * FROM monthly_salary');

次に、収集したデータを$monおよびに割り当てて連結し$salます。

$mon = "";
$sal = "";
while($row = mysql_fetch_array($sql)){
    $mon .= $row['month'].", ";
}
while($row = mysql_fetch_array($sql2)){
    $sal .= $row['salary'].", ";
}

その後、配列に変換し、連想配列になるまで連結します。

$monArray = array(substr(trim($mon), 0, -1));
$salArray = array(substr(trim($sal), 0, -1));
$key = "";
$keyWithVal = "";
foreach($monArray  as $k){
    $key .= $k." => ";
}
foreach($salArray  as $k){
    $keyWithVal .= $key.$k.",";
}

$associativeArray = array(substr(trim($keyWithVal), 0, -1));

私の問題は、エコーすると、結果が常に次のようになることです 3500=>Jan=>3500 :

foreach($associativeArray  as $k => $id){
    echo $k."=>".$id;
}

では、正しい出力Jan=>3500で修正するにはどうすればよいですか?

4

3 に答える 3

33

あなたはこの問題を複雑にしすぎています。これは、より少ないループで簡単に実行できます。

まず、SQL を 1 回だけ実行する必要があります。次に、最初のループで配列を構築します。

$sql = mysql_query('SELECT * FROM monthly_salary');

$associativeArray = array();
while($row = mysql_fetch_array($sql)){
   // Put the values into the array, no other variables needed
   $associativeArray[$row['month']] = $row['salary'];
}

foreach($associativeArray as $k => $id){
    echo $k."=>".$id;
}
于 2013-02-04T18:20:02.087 に答える
6

どうしてあなたはただやらないのですか:

$associativeArray = array();
while($row = mysql_fetch_array($sql)){
    $associativeArray[$row['month']] = $row['salary'];
}
于 2013-02-04T18:21:51.023 に答える