【发布时间】:2022-01-12 16:39:56
【问题描述】:
我面临一个奇怪的问题。我正在尝试创建一个自行填充的通用乘客列表。它决定性别、姓名和男性/女性。此外,如果要添加家庭成员。此列表有一个计数器 ($person),可与 for 函数配合使用。所以列表中的第一个人是 1,第二个人是 2,如果第三个人是第二个人的家庭成员,则 $person 整数得到 ++。但是,这个$person++ 会造成三分之二的内存问题,并且页面不会被加载;致命内存错误(致命错误:允许的内存大小为 536870912 字节已用尽(尝试分配 266338360 字节))
如何解决?
function insertPax($class, $pax, $nat) {
for($person = 1; ; $person++) {
$fam = 0;
$first = "";
$first2 = "";
$id = array_rand($_SESSION['LAST'. $nat],1);
$lastname = $_SESSION['LAST'. $nat][$id];
$gender = rand(0,1);
if($gender == 1) {
$md = array_rand($_SESSION['MALE'. $nat],1);
$first = $_SESSION['MALE'. $nat][$md];
$sec = rand(1,8); if($sec == 1) {
$m2 = array_rand($_SESSION['MALE'. $nat],1); $first2 = $_SESSION['MALE'. $nat][$m2];
}
$gend = "MALE"; $comp = "FEMALE"; $age = rand(18,80);
} else {
$fd = array_rand($_SESSION['FEMALE'. $nat],1);
$first = $_SESSION['FEMALE'. $nat][$fd];
$sec = rand(1,8); if($sec == 1) {
$f2 = array_rand($_SESSION['FEMALE'. $nat],1); $first2 = $_SESSION['FEMALE'. $nat][$f2];
}
$gend = "FEMALE"; $comp = "MALE"; $age = rand(17,80);
}
$fam = rand(1,4);
if($fam == 1) {
$ag2 = rand(17,80);
$cmp = array_rand($_SESSION[$comp . $nat],1);
$companion = $_SESSION[$comp . $nat][$cmp];
$manf .= "<br /><span style='color:yellow;'>". $person ." : ". $lastname .", ". $first ." ". $first2 ." ". $gend ." [". $age ."]";
# $person++; # <-- MEMORY ERROR
$manf .= "<br />". $person ." : ". $lastname .", ". $companion ." ". $comp ." [". $ag2 ."]</span>";
} else {
$manf .= "<br />". $person ." : ". $lastname .", ". $first ." ". $first2 ." ". $gend ." [". $age ."]";
}
if($person == $pax) break;
}
return $manf;
}
【问题讨论】:
-
这里的未知数太多了。我们不知道 $_SESSION 包含什么,以及它到底在做什么。如果您删除
$gender和if($person == $pax)之间的所有内容,那很好,所以它在里面。