php数组字符串键索引

时间:2014-04-17 11:51:30

标签: php key

我有以下代码:

 $a = array();
 $b = array('a', 'b');
 for($i=0; $i<3; $i++){
     $a[] = array($b[$i] => array(1, 2, 3));
 }

 print_r($a);

我得到以下结果:

Array
(
[0] => Array
    (
        [a] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )

    )

[1] => Array
    (
        [b] => Array
            (
                [0] => 1
                [1] => 2
                [1] => 3
            )

    )
 )

这就是我想要完成的事情:

 array (
    'a' => array ( 1, 2, 3 )
    'b' => array ( 1, 2, 3 )
 )

我做错了什么?我不想要$ a来添加数字元素,而是包含a,b,c作为索引。有什么建议?感谢

6 个答案:

答案 0 :(得分:1)

将for循环更改为像这样

for($i=0; $i<count($b); $i++){
    $a[$b[$i]] =array(1, 2, 3);
}

答案 1 :(得分:1)

你可以,

 $a = array();
 $b = array('a', 'b');
 for($i=0; $i<3; $i++){
     if(isset($b[$i])){
         $a += array($b[$i] => array(1, 2, 3));
     }
 }

<强> DEMO

答案 2 :(得分:0)

您可以像这样设置$ a的密钥:

$a = array();
 $b = array('a', 'b');
 for($i=0; $i<count($b); $i++){
     $a[$b[$i]] =  array(1, 2, 3);
 }

 print_r($a);

另外,我改变你的for循环使用count($b),因为你用硬编码3

迭代1到多次

答案 3 :(得分:0)

尝试:

$a[$b[$i]] = array(1,2,3);

答案 4 :(得分:0)

又一次迭代......

$a = array();
 $b = array('a', 'b');
 for($i=0; $i<3; $i++){
     $a[$b[$i]] = array(1, 2, 3);
 }

 print_r($a);

答案 5 :(得分:0)

让我们检查一下你做错了什么。

$a = array();
$b = array('a', 'b');  // Count of elements is 2
for($i=0; $i<3; $i++){ // this will loop 3 times assigning 0,1,2 to $i where. You only needed 0 and 1 for an array with 2  elements
    $a[] = array($b[$i] => array(1, 2, 3)); // here you are adding a new element to $a without providing key. So it becomes a numeric indexed array.
}

解决方案:

for($i=0; $i<count($b); $i++){ // you could use $i<2 as well however count($b) makes your code more dynamic and result won't be affected if no of elements in $b changes.
    $a[$b[$i]] =array(1, 2, 3); // you put $b[$i] as key for $a which creates an associative array
}