PHP在key中存储多个值

时间:2015-09-05 20:35:15

标签: php arrays loops object

是否可以在一个键中存储多个值?

我遍历我的数据库中具有以下属性的所有项目:

category, itemname and itemurl

现在我想按类别对所有项目进行排序,这意味着某些项目具有相同的类别,我希望它们在我的对象中一起显示,如下所示:

Items [
    category1 => item1[], item2[], item3[]
    category2 => item4[], item5[]
    category3 => item6[]
]

感谢您的帮助!

解决方案: 您可以将值存储在匿名数组

while ( $stmt->fetch()  ) {

    $tempArray = [
        'xxx' => xxx,
        'yyy' => yyy,
        'zzz' => zzz
    ];
    Items[category][ ] = $tempArray;
}

2 个答案:

答案 0 :(得分:1)

我可能没有正确理解这个问题,但是在php中很容易为每个键存储多个值

$items[0]['category'] = "Category 1"
$items[0]['itemname'] = "Item Numero Uno"
$items[0]['itemrul'] = "myfavoriteitem.com"

$items[1]['category'] = // . . . you get it

按类别重组它们应该相当容易

$categorized = array();

foreach ($items as $item) {
    $categorized[$item['category']][] = $item; //append item to the category
}

答案 1 :(得分:0)

我不确定我是否完全理解你,但如果我对你正在努力实现的目标是正确的话:

只需使用一个数组来存储它们(你不能拥有一个对应一个对象的一个​​键,但你可以有一个键到一个对象而一个对象可以存储许多其他对象)

Items [
    category1 => array(item1[], item2[], item3[]),
    category2 => array(item4[], item5[]),
    category3 => array(item6[])),
]