我有一个查询结果的对象。每个结果都有两列:缩写和文本。我需要创建一个新数组,我想要存储“text”列中的值,这些值按“缩写”列中的值分组。
我试过这个:
foreach ($results as $result) {
$results_by_book_abbreviation[$result->abbreviation] = $result->text;
}
我得到的是一个包含多个键的数组,但每个键只有一个值,但我的对象有多个具有相同键的值。
它在PHP 5.5.38中工作,现在我有PHP 7.0.13
数组KEYS是UNIQUE,所以如果你多次加载一个键,你每次都会覆盖它的内容。
所以在这样的$results_by_book_abbreviation[$result->abbreviation]
下面创建一个数组
foreach ($results as $result) {
$results_by_book_abbreviation[$result->abbreviation][] = $result->text;
// the change ^^
}
这在任何版本的PHP中都是错误的,因此它与您更改运行此代码的PHP版本无关
您需要创建一个数组数组,如下所示:
foreach ($results as $result)
{
if(!isset($results_by_book_abbreviation[$result->abbreviation]))
{
$results_by_book_abbreviation[$result->abbreviation] = array();
}
$results_by_book_abbreviation[$result->abbreviation][] = $result->text;
}