Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从MySQL表创建PHP数组_Php_Mysql - Fatal编程技术网

如何从MySQL表创建PHP数组

如何从MySQL表创建PHP数组,php,mysql,Php,Mysql,我有一个MySQL表: ------------------- |type_id|type_name| ------------------- | 22 | Toyota | | 22 | Mazda | | 23 | Volvo | | 23 | Man | | 25 | Scania | | 25 | Iveco | | 25 | Fiat | ------------------- 它是根据用户输入动态创建的。我想

我有一个MySQL表:

-------------------
|type_id|type_name| 
-------------------
|  22   | Toyota  |
|  22   | Mazda   |
|  23   | Volvo   |
|  23   |  Man    |
|  25   | Scania  |
|  25   | Iveco   |
|  25   | Fiat    |
-------------------
它是根据用户输入动态创建的。我想使用PHP从表中创建一个数组,如下所示:

array(
    '22' => array('Toyota', 'Mazda'),
    '23' => array('Volvo', 'Man'),
    '25' => array('Scania', 'Iveco','Fiat'),
);
其中,数组id将是类型\ id,元素将是类型\ id的类型\名称。我尝试了以下操作:

$results = array();
    while($line = mysqli_fetch_array($result, MYSQL_ASSOC))
    {
    $results[] = $line;
    }   
    print_r($results);
但我得到了:

Array ( 
    [0] => Array ( 
            [type_id] => 22 
            [type_name] => Toyota
        ) 
    [1] => Array ( 
            [type_name] => 22 
            [type_name] => Mazda
        )
    ...so on

请帮忙

从表中选择type_id和type_name列,并在foreach循环中执行以下操作:

$output = array();
foreach ($result as $item){
    $output[$item['type_id']][] = $item['Type_name'];
}

您需要稍微更改一下代码,它就会正常工作:-

$results = array(); 
while($line = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
  $results[$line['type_id']][] = $line['Type_name'];  //check change here
} 
print_r($results);

注意:-检查列名,如果有错误,请更正。

请在代码中替换您的db名称和表名-

$conn = mysqli_connect("localhost","root","","dbname");
$query ="select * from table";
$exe = mysqli_query($conn,$query);

$input = array();
$type = array();
while ($result = mysqli_fetch_array($exe)) 
{
    if(array_key_exists($result['type_id'], $input))
    {
        $type[] = $result['type_name'];
    }
    else
    {
        $type = array($result['type_name']);
    }
    $input[$result['type_id']] = $type;
}
echo "<pre>";
print_r($input);
$conn=mysqli_connect(“本地主机”、“根”、“数据库名”);
$query=“从表中选择*”;
$exe=mysqli\u查询($conn$query);
$input=array();
$type=array();
而($result=mysqli\u fetch\u数组($exe))
{
如果(数组_键_存在($result['type_id',$input))
{
$type[]=$result['type_name'];
}
其他的
{
$type=数组($result['type_name']);
}
$input[$result['type\U id']]=$type;
}
回声“;
打印(输入);

您尝试过什么吗?我建议使用循环…你试过什么吗,粘贴在这里。我们无法为您编写完整的代码。请出示证件effort@BibanCS检查我的答案。每个小组的品牌顺序重要吗?如果是这样,您需要包括一些定义顺序的方法。通常,这是通过主键
从TABLENAME GROUP BY type_id中选择type_id、GROUP_CONCAT(type_name)的机制来完成的
此查询将准确地给出您要查找的内容。不需要PHP处理。上面的代码有错误吗?我想知道这件事。你有几种方法可以做到这一点。这是一种方式。如果它是错误的或不起作用,请让我知道。OP不需要像你一样更改他的完整代码。只要在他的获取数据中做一点小小的更改,就会使他获得所需的输出,因为他说他能够很好地获取记录。顺便说一句,这不是一个失败的例子。在开始的时候,当我看到他的帖子时,他没有代码……后来他上传了,所以我看不到他的代码……@BibanCS很高兴帮助你:):)