Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-关联数组的键can';不能分配_Php - Fatal编程技术网

PHP-关联数组的键can';不能分配

PHP-关联数组的键can';不能分配,php,Php,我有一个关于关联数组的家庭作业。但是,无法分配数组的键 $array = array(); while($row = mysqli_fetch_assoc($result)){ // $code and $name are from database $array += array("$code" => "$name"); } print_r($array); 而不是显示 Array ( [123] => dave [234] => linda

我有一个关于关联数组的家庭作业。但是,无法分配数组的键

$array = array();
while($row = mysqli_fetch_assoc($result)){
   // $code and $name are from database 
   $array += array("$code" => "$name");
}
print_r($array);
而不是显示

Array (
    [123] => dave 
    [234] => linda 
)
它表明

Array ( 
    [0] => dave 
    [1] => linda 
)

发生了什么?

执行如下数组分配:

while($row = mysqli_fetch_assoc($result)){
   $array[$row['code']]= $row['name'];
}
while($row = mysqli_fetch_assoc($result)){
   $array[]= array($row['code']=>$row['name']);
}  
如果in-case代码可能相同,并且您希望获得所有名称,那么您必须进行多维数组赋值,如下所示:

while($row = mysqli_fetch_assoc($result)){
   $array[$row['code']]= $row['name'];
}
while($row = mysqli_fetch_assoc($result)){
   $array[]= array($row['code']=>$row['name']);
}  

我猜'code'和'name'变量来自
$row
,如果是这样,您可以使用以下语法

$array = [];

while(['code' => $code, 'name' => $name] = mysqli_fetch_assoc($result)){
   isset($code, $name) && ($array[$code] = $name); // isset is to avoid overriding an exisiting value with null it's not needed if the query limits that case
}

print_r($array);

速记数组语法([])可用于分解数组以进行赋值,如果我没记错的话,它是在PHP7.1中添加的

您希望从哪里获得123和234?什么是
$code
$name
?也显示代码的这一部分。您的
$code
值显示为您不期望的返回值。我们需要看看它是从哪里来的,以便弄清楚到底发生了什么。