PHP 将简单数组值推送到多维数组中不起作用
PHP Push simple array values in multidimensional array not working
编辑:更新代码。请查看注释行:
这是我的问题:
我有 2 个数组:
$numbers = array(0,3,8);
$data = array('January' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')), 'february' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')), 'march' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')));
预期输出必须是:
array (size=6)
'January' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '0' // // This is the first value from first array
'february' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '3' // This is the second value from first array
'march' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '8' // This is the last value from first array
我的PHP代码是:
for ($i = 0; $i < count($numbers); $i++)
{
foreach ($data as $key => $value)
{
$data[$key]['total_lunar'][$i] = $numbers[$i];
}
}
我不知道为什么,结果设置了每个数组而不是第一个数组的每个值:
array (size=6)
'January' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
'february' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
'march' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
['total_lunar']
键应该 return 一个值作为上面预期的输出,而不是所有数组值。到处寻找解决方案,但无法解决这个问题。
保持简单。我想这就是您要找的东西?
$n=0;
foreach($data as &$d) {
$d['total_lunar'] = $numbers[$n++];
}
你使用这个得到的预期输出:
echo '<pre>';
print_r($data);
echo '</pre>';
编辑:更新代码。请查看注释行:
这是我的问题:
我有 2 个数组:
$numbers = array(0,3,8);
$data = array('January' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')), 'february' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')), 'march' => array('BATH' => array('ID', 'user', 'type'), 'KITCHEN' => array('ID', 'user', 'type')));
预期输出必须是:
array (size=6)
'January' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '0' // // This is the first value from first array
'february' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '3' // This is the second value from first array
'march' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' => int '8' // This is the last value from first array
我的PHP代码是:
for ($i = 0; $i < count($numbers); $i++)
{
foreach ($data as $key => $value)
{
$data[$key]['total_lunar'][$i] = $numbers[$i];
}
}
我不知道为什么,结果设置了每个数组而不是第一个数组的每个值:
array (size=6)
'January' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
'february' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
'march' =>
array (size=2)
'BATH' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'KITCHEN' =>
array (size=3)
0 => string 'ID' (length=2)
1 => string 'user' (length=4)
2 => string 'type' (length=4)
'total_lunar' =>
array (size=3)
0 => int 0
1 => int 3
2 => int 8
['total_lunar']
键应该 return 一个值作为上面预期的输出,而不是所有数组值。到处寻找解决方案,但无法解决这个问题。
保持简单。我想这就是您要找的东西?
$n=0;
foreach($data as &$d) {
$d['total_lunar'] = $numbers[$n++];
}
你使用这个得到的预期输出:
echo '<pre>';
print_r($data);
echo '</pre>';