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


PHP Associative array inserting as indexed array

>我需要具有此结构的关联数组(键是字符串,值是索引数组(,并且我正在动态附加元素。

Array(
 ["itemCategory"]=> Array("itemName", "itemName"...)
 ["itemCategory"]=> Array("itemName", "itemName"...)
 ...
)

但是,当我这样做时,我似乎无法在关联数组中形成数组(根据要求,我添加了 MySQLi 代码(:

if (!($stmt = $mysqli->prepare(
"SELECT b.id, b.type, b.name, b.street, b.city, b.state, b.zipcode, b.phone,  b.website, b.hours, b.latitude, b.longitude, c.id, c.name, i.id, i.name
FROM business b LEFT JOIN business_category_item bci ON bci.bid = b.id
LEFT JOIN category c ON c.id=bci.cid LEFT JOIN item i ON i.id = bci.iid"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
if(!$stmt->bind_result($bID,$bT,$bN,$bStr,$bC,$bSta,$bZ,$bP,$bW,$bH,$bLat,$bLng,$cI,$cN,$iI,$iN)){
    echo "Bind failed: "  . $mysqli->connect_errno . " " . $mysqlii->connect_error;
}
$arr=array();
while($row=$stmt->fetch()){
    $arr[$cN][]=$iN; //gettype($cN) returns "string"
}

我也尝试过array_push((没有运气(未定义的索引错误(:

array_push($arr[$cN],$iN);

当我打印数组时,它总是像这样打印:

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"
        )
)

任何帮助将不胜感激。

为什么不让它更简单,而是使用这样的东西:

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

您将很容易迷失在所有这些众多变量中,这些变量具有您在bind_result()中所做的难以辨认的名称。

我相信

我已经解决了这个问题。当我使用 var_dump($arr); 时,它正确地打印为关联数组。当我使用 print_r($arr); 时,它打印为索引数组。我不确定这是为什么。

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