如何用循环填充多维数组
How to fill multidimensional array with loop
我有一个数组:
$days = array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
我有一个查询 从数据库 (day_name,ID) 获取天数;
我需要你的帮助:我想用下面的循环填充数组并使其关联。示例结果:
thursday => array(
'ID' => 1,
'name' => thursday
),
friday => array(
'ID' => 1,
'name' => thursday
),
....eg
我现在的代码:
$query='Query days from database';
foreach($query as $res)
{
foreach($days as $day)
{
if($res == $day)
{
// now there I want to put informations
}
}
}
不需要嵌套循环。将数组初始化为关联数组。然后使用数据库查询中的 name
列对结果进行索引并分配给该元素。
$days = ['sunday' => [], 'monday' => [], ...];
foreach ($query as $row) {
$days[$row['name']] = $row;
}
如果您无法初始化数组(如@Barmar Answer 中的建议),您需要查找数组键以用数组覆盖它。喜欢这里:
$days=array('Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
print_r($days);
//Example
$res[0]['name']="Sunday";
$res[0]['ID']="7";
$res[1]['name']="Monday";
$res[1]['ID']="1";
foreach($res as $k => $v){
$daykey = array_search($res[$k]['name'], $days);
if ($daykey !== false) {
$days[$daykey]=array($res[$k]['name']=>array('ID'=>$res[$k]['ID'],'name'=>$res[$k]['name']));
} else {
//do nothing... or whatever
}
}
print_r($days);
我有一个数组:
$days = array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
我有一个查询 从数据库 (day_name,ID) 获取天数; 我需要你的帮助:我想用下面的循环填充数组并使其关联。示例结果:
thursday => array(
'ID' => 1,
'name' => thursday
),
friday => array(
'ID' => 1,
'name' => thursday
),
....eg
我现在的代码:
$query='Query days from database';
foreach($query as $res)
{
foreach($days as $day)
{
if($res == $day)
{
// now there I want to put informations
}
}
}
不需要嵌套循环。将数组初始化为关联数组。然后使用数据库查询中的 name
列对结果进行索引并分配给该元素。
$days = ['sunday' => [], 'monday' => [], ...];
foreach ($query as $row) {
$days[$row['name']] = $row;
}
如果您无法初始化数组(如@Barmar Answer 中的建议),您需要查找数组键以用数组覆盖它。喜欢这里:
$days=array('Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
print_r($days);
//Example
$res[0]['name']="Sunday";
$res[0]['ID']="7";
$res[1]['name']="Monday";
$res[1]['ID']="1";
foreach($res as $k => $v){
$daykey = array_search($res[$k]['name'], $days);
if ($daykey !== false) {
$days[$daykey]=array($res[$k]['name']=>array('ID'=>$res[$k]['ID'],'name'=>$res[$k]['name']));
} else {
//do nothing... or whatever
}
}
print_r($days);