2014-04-17 110 views
-1

我有以下代码:PHP数组字符串键索引

$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作为索引。有什么建议么?由于

回答

0

您可以设置键$一个这么喜欢:

$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),你在那里与迭代1至多次的硬编码3

0

尝试:

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

变化的for循环喜欢这个

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

还有一个迭代..

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

print_r($a); 
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

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 
}