PHP关联数组作为索引数组插入

PHP关联数组作为索引数组插入,php,arrays,associative-array,Php,Arrays,Associative Array,我需要一个具有这种结构的关联数组(键是字符串,值是索引数组),并且动态地追加元素 Array( ["itemCategory"]=> Array("itemName", "itemName"...) ["itemCategory"]=> Array("itemName", "itemName"...) ... ) 但是,在执行此操作时,我似乎无法在关联数组中形成数组(根据请求,我添加了MySQLi代码): 我还尝试了array_push(),但没有成功(未定义的索引错误):

我需要一个具有这种结构的关联数组(键是字符串,值是索引数组),并且动态地追加元素

Array(
 ["itemCategory"]=> Array("itemName", "itemName"...)
 ["itemCategory"]=> Array("itemName", "itemName"...)
 ...
)
但是,在执行此操作时,我似乎无法在关联数组中形成数组(根据请求,我添加了MySQLi代码):

我还尝试了array_push(),但没有成功(未定义的索引错误):

当我打印阵列时,它总是这样打印:

print_r($arr, true);  

Array
(
    [0] => Array
        (
            [0] => "MP3 player"
            [1] => "Computers"
        )

    [1] => Array
        (
            [0] => "Tank tops"
            [1] => "Blankets"
            [2] => "Shirts"
        )
)
而不是我需要的,那就是:

Array
(
    ["electronics"] => Array
        (
            [0] => "MP3 player"
            [1] => "Computers"
        )

    ["clothing"] => Array
        (
            [0] => "Tank tops"
            [1] => "Blankets"
            [2] => "Shirts"
        )
)
任何帮助都将不胜感激。

我相信我已经解决了这个问题。当我使用
var\u dump($arr)时,它将正确打印为关联数组。当我使用
print\r($arr)时,它以索引数组的形式打印。我不知道这是为什么


编辑:事实上,问题是我在打印数组之前使用sort($arr)对数组进行了排序。

为什么不简化它,改用类似的方法:

$result = $mysqli->query("SELECT...");
if ($result->num_rows) {
    while($row = $result->fetch_assoc()){
        $arr[$row['id']][] = $row['name'];
    }
}

bind\u result()

中创建的所有这些名称无法识别的变量中,您将很容易迷失方向。您编写的代码看起来应该可以工作。您确定
$cName
设置正确吗?您正在使用
mysqli
?显示
->bind_result()
部分,其中最有可能设置了
$cName
。请发布实际代码,尤其是设置
$cName
的部分。Hi@Barmar。是,当我
echo$cName时
echo gettype($cName)我正确地获得了类别以及类型“string”。@Barmar,我添加了MySQLi代码。我很欣赏这些风格提示。然而,我已经解决了我的问题。请看下面。不用担心。只是想从长远来看帮你省点麻烦。他用的是
mysqli
,而不是
PDO
。我的错。在这种情况下,显然应该修改
fetch()
行为以返回一个关联数组。
$stmt->fetch()
返回一个布尔值,而不是关联数组。我从未见过类似的情况。你看过我在ideone.com上的演示吗?它使用
print\r
,并作为关联数组正确打印。如果执行类似
print\r(数组值($arr))
的操作,则会出现这种情况。但是我不相信仅仅从
print\u r()
切换到
var\u dump()
,而不改变任何其他内容,就能解决这个问题。答案修改了。我忘了在打印数组之前对数组进行了排序,这导致了我的问题。但在使用
var\u dump
打印数组之前,您没有对数组进行排序?
Array
(
    ["electronics"] => Array
        (
            [0] => "MP3 player"
            [1] => "Computers"
        )

    ["clothing"] => Array
        (
            [0] => "Tank tops"
            [1] => "Blankets"
            [2] => "Shirts"
        )
)
$result = $mysqli->query("SELECT...");
if ($result->num_rows) {
    while($row = $result->fetch_assoc()){
        $arr[$row['id']][] = $row['name'];
    }
}