只有第一个字母被分配给数组元素

时间:2017-06-27 21:14:33

标签: php arrays

我有一个购物车($ _SESSION [cart_array])。我想使用该数组中唯一的GroupName字段填充选择/选项列表。

我的方法是1)创建一个只包含GroupName字段的新数组,然后2)使用array_unique()创建一个只有唯一值的第三个数组。

我认识到这可能不是最有效的方式,欢迎提出建议。

然而,在我达到这一点之前,我有一个更基本的问题。我似乎只是分配变量的第一个字母。

$GroupNames = array();
foreach($_SESSION[cart_array] as $h) {
    echo $h['GroupName']."<br>";
    $GroupNames[] = $h['GroupName'];
}

foreach ($GroupNames as $entry) {

    echo $entry['GroupName'] . "<br>";

}
print_r($GroupNames);

上面代码的输出是: 水晶农场

Java Garden Batiks

Java Garden Batiks

Java Garden Batiks

Crystal Farm - Precuts

Crystal Farm - Precuts

C

Ĵ

Ĵ

Ĵ

C

C

数组([0] =&gt; Crystal Farm [1] =&gt; Java Garden Batiks [2] =&gt; Java Garden Batiks [3] =&gt; Java Garden Batiks [4] =&gt; Crystal Farm - Precuts [5] =&gt; Crystal Farm - Precuts)

我的研究表明我似乎没有将$ GroupName声明为数组,但它看起来像我一样。所以,我迷失了。提前谢谢。

1 个答案:

答案 0 :(得分:1)

$GroupNames[] = $h['GroupName'];

实际上构建了一组组名,例如:

$GroupNames = array(
   "group1",
   "group2"
)

但是你这样做

foreach ($GroupNames as $entry) {
    // This bit is looking for a key which does not exist.
    echo $entry['GroupName'] . "<br>"; 
    //Instead try
    echo $entry . "<br>";

}

或者,也许你真的想要一个多维数组。在这里构建它的原因是什么:

foreach($_SESSION[cart_array] as $h) {        
    $GroupNames[] = $h['GroupName']; //current
    // You want the following
    $GroupNames[] = array("GroupName" => $h['GroupName']);
}

然而,在目前的例子中,我认为我会选择选项1.