我有以下代码:
$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 :(得分: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
答案 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
}