【问题标题】:Create an associative array in php with dynamic key and value在php中创建一个具有动态键和值的关联数组
【发布时间】:2013-02-04 18:14:03
【问题描述】:

我想在 php 中创建一个关联数组,其中包含动态键以及来自特定 mysql 表的动态值。

表名为monthly_salary,有两列分别名为monthsalary

我得到里面的数据:

$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=>一月=>3500

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

那么我该如何修复它并使用正确的输出 Jan=>3500

【问题讨论】:

  • 为什么同一个 SQL 查询要运行两次?
  • 您希望array(substr(trim($mon), 0, -1)) 做什么?所有这一切都是将字符串转换为数组,从而为您提供一个包含一个元素的数组。 array('1, 2, 3') 不会创建一个包含 3 个元素的数组,它会在一个元素上创建一个数组,即字符串 '1, 2, 3'。要将字符串转换为数组,请使用explode$array = explode(', ', '1, 2, 3);.

标签: php arrays associative


【解决方案1】:

你把这个问题复杂化了。这可以通过更少的循环简单地完成。

首先,您只需运行 SQL 一次。其次,在第一个循环中构建数组。

$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;
}

【讨论】:

  • 显示关联,而不是使用循环,你可以做 echo "
    "; print_r($associativeArray);
  • @Strixy:没错,我只是从问题中复制代码。
【解决方案2】:

你为什么不这样做:

$associativeArray = array();
while($row = mysql_fetch_array($sql)){
    $associativeArray[$row['month']] = $row['salary'];
}

【讨论】:

  • 这个答案和 Rocket Hazmat 提供的答案有什么区别?
  • 没有,我们是同时发的。他/她打败了我。
  • @DiscoInfiltrator:那是因为我是忍者^^
【解决方案3】:

以下内容为我创建了关联数组。 array_push 不适用于关联数组,但使用一元运算符确实有效:

$associativeArray += [$key => $value];

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多