我对PHP比较陌生,阵列让我很适合!我正在尝试学习如何修改数组并从修改中创建新数组,但我的尝试只返回foreach循环中的最后一个数组键。
function stuff() {
$items = array('shirt', 'shoes', 'pants');
$colors = array('red', 'blue', 'green');
$list = array();
foreach($items as $item) {
foreach($colors as $color) {
$list[$item] = array($color => 'available');
}
}
return $list;
}
我希望它返回的是:
Array
(
[shirt] => Array
(
[red] => available
[blue] => available
[green] => available
)
[shoes] => Array
(
[red] => available
[blue] => available
[green] => available
)
[pants] => Array
(
[red] => available
[blue] => available
[green] => available
)
)
但是,它似乎只返回第二个数组中的最后一项...
Array
(
[shirt] => Array
(
[green] => available
)
[shoes] => Array
(
[green] => available
)
[pants] => Array
(
[green] => available
)
)
答案 0 :(得分:10)
将$list[$item] = array($color => 'available');
更改为$list[$item][$color] = 'available';
,您的问题就会得到解决。
答案 1 :(得分:3)
替换
$list[$item] = array($color => 'available');
与
$list[$item][$color] = 'available';
答案 2 :(得分:0)
这是完整的代码。基本上,每次循环颜色时都会定义一个新数组,取代之前的颜色。
function stuff()
{
$items = array('shirt', 'shoes', 'pants');
$colors = array('red', 'blue', 'green');
$list = array();
foreach($items as $item)
{
foreach($colors as $color)
{
$list[$item][$color] = 'available';
}
}
return $list;
}
print_r(stuff());