我正在通过以下方式从mysql表中提取一些数据:
$result = mysql_query("SELECT characters_ID, name, borndate, deathdate, marrieddate, ispregnant FROM characters WHERE isfemale='1'",$db);
$femaledata = array();
while ($row_user = mysql_fetch_assoc($result))
$femaledata[] = $row_user;
这给了我一个像这样的数组:
Array (
[0] => Array ( [characters_ID] => 2 [name] => Helene [borndate] => 35 [deathdate] => 431 [marrieddate] => 157 [ispregnant] => 0 )
[1] => Array ( [characters_ID] => 4 [name] => Isabelle [borndate] => 161 [deathdate] => [marrieddate] => 303 [ispregnant] => 1 )
[2] => Array ( [characters_ID] => 7 [name] => Helene [borndate] => 326 [deathdate] => [marrieddate] => [ispregnant] => 0 )
[3] => Array ( [characters_ID] => 72 [name] => Faylinn [borndate] => 335 [deathdate] => [marrieddate] => [ispregnant] => 0 )
[4] => Array ( [characters_ID] => 74 [name] => Relina [borndate] => 349 [deathdate] => [marrieddate] => [ispregnant] => 0 )
)
现在我需要删除任何具有死亡日期值或怀孕的字符,然后我需要在其他字符上运行一些代码。例如,我需要获取borndate值,将其与当前日期进行比较以查找年龄,并且部分基于年龄,我需要为每个角色运行代码以确定角色是否在回合中怀孕。
很抱歉这似乎是一个影响深远的问题。多维数组似乎仍然让我困惑。
编辑:(问题需要更清楚)
你能建议最好的方法,我要么爆炸或分解数组,然后对数据做条件修改,或者我如何删除不需要的数据,然后对数据做条件修改。
我在这里的最终输出将是选择合适的女性角色(没有死亡或怀孕),并基于她们的年龄,给她们怀孕的机会。如果为真,我将向SQL数据库抛出一些代码来更新该字符。
谢谢!
所有需要的东西都可以用SQL完成:
现在我需要删除任何具有死亡日期或ispregnant
只需在WHERE条件中添加一些参数:
isPregnant IS NULL AND deathdate IS NULL
例如,我需要获取出生日期值,将其与查找年龄的当前日期
根据您的字段格式,数学可以在SQL中完成,请查看mysql的DATE函数
不要低估你的sql server的能力,99%的时间它可能比php处理数据集快。
如果立即从数组中删除一些行,请尝试限制通过SQL接收的数据。
你可以像这样遍历数组:
foreach($femaledata as $female)
{
echo $female['name'];
}
这是什么意思?
$femaledata = array();
while ($row_user = mysql_fetch_assoc($result)) {
$ok = false;
// do you validation for every user
if($ok) array_push($femaledata,$row_user);
}
TJHeuvel给了你正确的答案,你应该接受这个答案。然而,要告知:多维数组不需要混淆。让我看看能不能解释清楚。
在PHP中,您可以将任何对象放入数组,包括其他数组。假设你有一个包含其他数组的数组。当你使用循环构造(通常是foreach循环)迭代该数组时,循环的每次迭代都会给你另一个数组;如果你想访问这个子数组的元素,只需循环遍历它。这被称为嵌套循环。例子:
$r = array(
array(1,2,3),
array(4,5,6),
array(7,8,9)
);
foreach ($r as $cur) {
foreach ($cur as $num) {
echo $num;
}
}
外循环的每次迭代中,$cur
包含一个数组;内部循环遍历该数组的内容。该技术允许您处理任何维度的数组。
但是,在您的特定情况下,您不需要使用内部循环来遍历子数组。您只需要通过键访问子数组的某些元素,而不需要依次处理所有元素。所以,一个简单的foreach
循环就可以了。