Я хочу создать ассоциативный массив в php с динамическим ключом, а также динамическое значение из конкретной таблицы mysql.
Имя таблицы monthly_salary
с двумя столбцами с именами 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?
array(substr(trim($mon), 0, -1))
? Все, что он делает, это преобразует строку в массив, который дает вам массив с одним элементом.array('1, 2, 3')
не создает массив из 3 элементов, он создает массив из одного элемента, строки'1, 2, 3'
. Чтобы превратить строку в массив, используйтеexplode
.$array = explode(', ', '1, 2, 3);
. - person Rocket Hazmat   schedule 04.02.2013