【问题标题】:How to Convert mysql to array result with number如何将mysql转换为带有数字的数组结果
【发布时间】:2017-02-05 22:20:01
【问题描述】:

我有这样的php代码

$sql = mysql_query("SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'");
while($tjans = mysql_fetch_array($sql)){    

print_r($tjans);

}

但是输出显示这个

Array ( [userName] => mita ) 
Array ( [userName] => wendyang ) 
Array ( [userName] => viviekosasih )

现在,如何将数组转换成这样的结果

Array
(
    [0] => mita
    [1] => wendyang
    [2] => viviekosasih
)

所以我可以用 echo $tjans[0], $tjans[1], $tjans[2] 调用

谢谢你..

【问题讨论】:

  • 对于初学者,请停止使用mysql_*,因为它在 PHP 7 中已被弃用和删除。开始学习使用mysqli_* 或 PDO
  • 这只是一个简单的数组赋值$array[] = $tjans['userName']
  • mysql_fetch_array() 将以数字键和字段名称作为键返回。但是,如果您要求所有行都对齐,那么您必须将数据推送到循环内的数组中。
  • @Zy 先生。我在答案中添加了更多代码。和我分享你的想法。也添加了多数据和单行数据的代码。
  • @Naresh Kumar.P 好的,谢谢 :)

标签: php mysql arrays loops while-loop


【解决方案1】:

mysql_fetch_assoc() - 获取结果行作为关联数组。此函数将返回一行作为关联数组,其中列名将是存储相应值的键。

说明:返回一个关联数组,对应于获取的行,并将内部数据指针向前移动。 mysql_fetch_assoc() 等效于使用 MYSQL_ASSOC 为可选的第二个参数调用 mysql_fetch_array()。它只返回一个关联数组。

之后您需要执行array_values(),以便它将所有值转换为带有数字键的数组。

array_values — 返回一个数组的所有值

array_values() 返回数组中的所有值并以数字方式索引数组。

如果您的查询返回多行作为输出,您可以更喜欢这种方法:

$sqlxx = mysql_query("SELECT userName FROM rcpa_users WHERE upline_users = '$selectuname'"); 
$final_tjans = array();
while($tjans = mysql_fetch_assoc($sqlxx))
{
    $final_tjans[] = $tjans['userName'];
}
print_r($final_tjans);

如果您的代码仅返回单行作为输出:

$sqlxx = mysql_query("SELECT userName FROM rcpa_users WHERE upline_users = '$selectuname'"); 
$tjans = mysql_fetch_assoc($sqlxx));
$final_tjans = array_values($tjans); 
print_r($final_tjans);

示例:

<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>

输出:

Array
(
    [0] => XL
    [1] => gold
)

注意:mysql 扩展的用法在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

【讨论】:

  • 输出显示:( Array ( [0] => mita ) Array ( [0] => wendyang ) Array ( [0] => viviekosasih )
  • 使用这个 php 代码 $sqlxx = mysql_query("SELECT userName FROM rcpa_users WHERE upline_users = '$selectuname'"); while($tjans = mysql_fetch_assoc($sqlxx)){ print_r(array_values($tjans)); }
  • 您是通过执行该查询获得单行数据还是多行数据
  • 只有单行
  • 去掉while循环,然后执行数组值选项
【解决方案2】:

当您有多个记录时,使用 array_values 简单获取数组将不起作用,因为它只会返回一行。 要从此查询中获取所有行,您需要通过每一行获取。 如下所示

if (mysql_num_rows($result) > 0) {
    $tjan = array();
    while($row = mysql_fetch_assoc($result)  ) {
        $tjan[] = $row['price'];
    }
    print_r($tjan);
}

然后在循环前必须为空的数组中添加“价格”字段。 最后你会得到一个你想要的数组。 干杯,

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • 非常感谢,我已经添加了,我在回答方面有些新,所以现在可能也需要一些更正。不过谢谢指点。
【解决方案3】:

您根本不需要运行循环。将结果存储在数组中:

$tjans = mysql_fetch_assoc($sql);
$tjans = array_values($tjans);

【讨论】:

    【解决方案4】:

    首先,您应该使用 mysqli 而不是 mysql,因为它已被贬值,并且无需使用任何类型的循环,因为您的 Select 查询将获取与您的 where 条件匹配的所有记录。以下是您可以使用的代码 sn-p。

    $sql = mysql_query("SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'");
    $tjans = mysqli_fetch_assoc($sql);
    print_r(array_values($tjans));
    

    【讨论】:

      【解决方案5】:

      您所要做的就是创建一个数组并将 userName 存储到其中,然后在 while 循环之外打印该数组以查看输出。

      $new_array = array();
      $sql = mysqli_query($conn, "SELECT userName FROM `rcpa_users` WHERE upline_users = '$selectuname'");
      while($tjans = mysqli_fetch_object($sql)){
          $new_array[] = $tjans->userName;
      }
      
      print_r($new_array);
      

      我对你的代码做了什么改动??

      1. 将所有mysql_* 删除到mysqli_*
      2. userName 的进一步存储创建一个数组并存储。
      3. 在循环外打印新数组。
      4. 最后一个是使用$conn 变量。这是连接字符串,您必须了解这一点。 click here

      注意: original MySQL extension 现已弃用, 并且在连接到一个 数据库。相反,使用 MySQLiPDO_MySQL 扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-09
        • 2017-06-05
        • 2015-11-25
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多