如何使用for循环在关联数组中插入变量

how to insert variables in associative array using for loop

我想在关联数组中插入两个值,一个作为键,第二个作为值,当我打印该数组时,它应该包含所有 a-k 作为键,0-10 作为它们的对应值。

<?php
$z=array("a","b","c","d","e","f","g","h","i","j","k");

$countsub1 = array();
for($i=0;$i<=10;$i++)
{

$countsub1 = array("$z[$i]","$i");

}
print_r($countsub1);

?>

在这里,我只得到数组中变量的最后一个值,但我希望它们全部合而为一。这怎么能做到??

我想要这个 输出:

数组 ( [a] => 0,[b] => 1,[c] => 2,[d] => 3,[e] => 4,[f] => 5.. ......等等)

您没有将其存储到 array。您正在将其存储到 variable。这就是为什么它会覆盖最后一个值而你得到最后一个值。试试 -

$countsub1[] = array("$z[$i]","$i");

试试这个:

<?php
$z=array("a","b","c","d","e","f","g","h","i","j","k");

$countsub1 = array();
for($i=0;$i<=10;$i++) {
    $countsub1[] = array($z[$i],$i);
}
print_r($countsub1);
?>

您必须使用 $countsub1[] 为数组赋值,因为 $countsub1 将在每个循环中覆盖前一个值。

PS:变量不应像赋值时在循环中那样放在引号内,PHP 可能会将其视为字符串

您一直覆盖 $countsub1,这就是为什么您只获得最后一个值的原因。

您需要使用以下方法之一将其追加到数组中:

$countsub1[] = array("$z[$i]","$i"); 
array_push($countsub1, array("$z[$i]","$i"));

在您的代码中,您正在将值分配给变量 hens,如果您想将值插入数组,它会获取最后一个值,请像这样使用

 $array=array()
    for($i=0;$i<=10;$i++)
    {

    $array[] = array($z[$i],$i);

    }

    print_r($array)

$array[] is the method to insert values into the array.and $array  is the method to assign value to variable . 
that's the reason you are getting only last value as it is overwriting the previous value.

$array[] will store the values into the index like "0,1,2....."
$array will override the values every time in the loop
if you use $array['key'] in the loop it will also do the same job as $array

在一行中你可以使用 array_flip() PHP 函数。

$countsub1 = array_flip($z);

$z=array("a","b","c","d","e","f","g","h","i","j","k");    
$countsub1 = array();
for($i=0;$i<=10;$i++)
{
   $countsub1[$z[$i]] = $i;
}
print_r($countsub1);

输出

Array
(
    [a] => 0
    [b] => 1
    [c] => 2
    [d] => 3
    [e] => 4
    [f] => 5
    [g] => 6
    [h] => 7
    [i] => 8
    [j] => 9
    [k] => 10
)

制作像 OP 这样的关联数组的答案要求: 如果您想要重复的键,下面的代码将起作用,否则我建议您进行数组合并

$z=array("a","b","c","d","e","f","g","h","i","j","k");

$countsub1 = array();
for($i=0;$i<=10;$i++)
{
   //duplicate keys option
   $countsub1[] = array($z[$i] => $i);
    //single array with unique keys
   $countsub1 = array_merge($countsub1, array($z[$i] => $i));
}
print_r($countsub1);

就像其他人所说的那样,您一直在给 $countsub1 赋值,所以它被覆盖并具有上次赋值的值。您需要 向其附加

所以你想做的是翻转 $z 数组的键和值,对吧?如果是这样,则已经为您预定义了一个函数:array_flip

编辑:如果您想手动完成,我建议在下面使用更灵活的代码,它接受 $z 的不同长度:

$countsub1 = array();
foreach ($z as $key => $value) {
    $counsub1[$value] = $key;
}

试试这个:

 $arr=array();
    for($i=0; $i<=10; $i++){
        $key =$z[i];
        $arr[$key]=$i;
    }