如果另一個陣列是“滿的”,我目前正在嘗試讓一個關聯陣列取值。有兩個代表停車場的 asso 陣列(一個用于小型汽車,另一個用于大型汽車),如果小型汽車都被占用,小型汽車可以停在較大的位置。我得到了這個作業,但我被困在我似乎沒有得到的一點邏輯上。
小陣列有 10 個點,大陣列有 14 個。給我帶來麻煩的一點是,( $_SESSION['parkingLarge']["spot1"] === 0 && $_SESSION['parkingSmall']["spot10"] === 1)
我知道這是可以預料的,因為當它跳出第一個 foreach 回圈時,它將滿足下一條陳述句中的條件并添加last 1 到第一個陣列中的 spot10 并且它也會自動將它添加到較大陣列的第一個位置。
有沒有辦法可以阻止這種行為,或者以更好的方式編碼?
陣列是:
$parkingSmall = array(
"spot1" => 1, "spot2" => 1, "spot3" => 1, "spot4" => 1, "spot5" => 1,
"spot6" => 1, "spot7" => 1, "spot8" => 1, "spot9" => 0, "spot10" => 0
);
$parkingLarge = array(
"spot1" => 0, "spot2" => 0, "spot3" => 0, "spot4" => 0, "spot5" => 0,
"spot6" => 0, "spot7" => 0, "spot8" => 0, "spot9" => 0, "spot10" => 0,
"spot11" => 0, "spot12" => 0, "spot13" => 0, "spot14" => 0
);
$_SESSION['parkingSmall'] = $parkingSmall;
$_SESSION['parkingLarge'] = $parkingLarge;
代碼
if ($_POST["size"] == 'small') {
foreach ($_SESSION['parkingSmall'] as $key => $value) {
if ($value === 0) {
$_SESSION['parkingSmall'][$key] = 1;
echo "Car parked";
break;
}
}
if ( $_SESSION['parkingLarge']["spot1"] === 0 && $_SESSION['parkingSmall']["spot10"] === 1) {
foreach ($_SESSION['parkingLarge'] as $key => $value) {
if ($value === 0) {
$_SESSION['parkingLarge'][$key] = 1;
echo "Small car parked in large spot";
break;
}
}
}
if ($_SESSION['parkingLarge']["spot14"] === 1) {
echo "No more spaces available in both parkings";
return false;
}
}
對此的任何幫助都非常受歡迎!!!
uj5u.com熱心網友回復:
您可以array_search在這種情況下使用,例如:
$type = 'small';
$key = array_search(0, $_SESSION['parkingSmall']) ?: null;
if (!$key) {
$type = 'large';
$key = array_search(0, $_SESSION['parkingLarge']) ?: null;
}
var_dump($type, $key);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442655.html
