php - 有没有更好的方法来构建我的具有搜索功能的 PHP 数组?

标签 php mysql arrays multidimensional-array

我经营的网站允许数百名客户在线销售产品。当客户访问我客户的一个网站时,他们会以

的形式访问

www.site.com?userid=12345

在登陆页面上,我们使用 mysql 查找用户 ID 为 12345 的客户的信息以及他/她可以销售的产品列表。我们只提供一套约 30 种产品,我们对它们进行定义,以便我们知道它们的外观,但并非所有客户都能以相同的价格提供。此信息的 mysql 表如下所示:

userid | category | itemid | price
=================================
12345  |    1     |  1     | 1.00
12345  |    1     |  2     | 2.00
12345  |    1     |  3     | 3.00
12345  |    2     |  4     | 4.00
12345  |    2     |  5     | 5.00
67890  |    1     |  1     | 2.25
67890  |    2     |  4     | 8.00

当客户访问 www.site.com?userid=12345 时,将使用以下内容进行查找:

SELECT category, itemid, price FROM tablename WHERE userid = 12345

*注意 - 是的,我防止了 sql 注入(inject)。

我遇到的问题是如何在 PHP 中构建后续数组。我最初的想法是:

<?php
...

while ($row = $stmt->fetch()) {
  $products[]['category'] = $row['category'];
  $products[]['itemid'] = $row['itemid'];
  $products[]['price'] = $row['price'];
}


//the array will end up looking like this:
Array
(
    [0] => Array
        (
            [category] => 1
            [itemid] => 1
            [price] => 1
        )
    [1] => Array
        (
            [category] => 1
            [itemid] => 2
            [price] => 2
        )
    [2] => Array
        (
            [category] => 1
            [itemid] => 3
            [price] => 3
        )
    [3] => Array
        (
            [category] => 2
            [itemid] => 4
            [price] => 4
        )
    [4] => Array
        (
            [category] => 2
            [itemid] => 5
            [price] => 5
        )
)

?>

我需要这样捕获信息的原因:在实际站点本身,有两个主要类别(食品和饮料)。如果客户在 $products 中有类别 1 的任何产品,请在页面上显示 Food html 部分。如果客户有类别 2 的 $products 中的任何产品,请在页面上显示饮料 html 部分。

然后,有一组预定义的 itemids 可用于所有类别。就食物而言,有 4 个:

  1. 意大利辣香肠
  2. 香肠
  3. 奶酪
  4. 蔬菜

如果用户没有这些 itemids 之一,他/她就不能销售该产品,并且该产品不会出现在食品 html 部分中。如果他们能够销售该产品,我希望能够引用该部分/项目的价格并将其显示在实际项目旁边。

我知道我的 $products 数组将包含我需要的所有信息,但我不确定我构建它的方式是否最好,或者在按照描述构建页面时如何真正引用它。

例如(我知道这段代码不对但说出了我想要完成的):

  • “如果 $products 类别数组中存在值 1,则显示食品部分。”
  • “如果 $products itemid 类别数组中存在值 1,则将意大利辣香肠披萨显示为页面上的一个选项,并显示与该特定类别/itemid 组合关联的价格。”

感谢任何指导。

最佳答案

$products[]['category'] = $row['category'];
$products[]['itemid'] = $row['itemid'];
$products[]['price'] = $row['price'];

这将为每个属性创建一个新数组;使用

$products[] = $row;

…将行内容复制到产品数组。

关于php - 有没有更好的方法来构建我的具有搜索功能的 PHP 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293976/

相关文章:

php - API应该消耗自己还是直接调用数据库获取其他资源?

php - 正则表达式匹配golang sql dsn

javascript - 在本地使用 bootstrapValidator 发送静态数据

python数组符号简写:"k%parents.shape[0]"是什么意思?

arrays - 在列表中的任何位置添加/删除元素时,链表是否比数组更好?

php - 在 PHP 中创建动态类别菜单

mysql - ngModel 不绑定(bind)整数值

php - 如何在两个不同的表中进行搜索?

mysql - bash 中 mysql 查询之外的变量未由 echo 上的本地 bash 变量填充

c - 使用指向指向数组的指针的指针打印二维数组