2014-04-17 106 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 
}