php前端返回数组,PHP返回数组已完成要求

我在这里有一些功能,我正在努力获得正确的输出.

主要思想是使用名为buildinginfo的函数和调用函数avaliableBuildingBuildings循环通过buildinginfo的数组并循环通过需求来查明需求是否完整.

在我的数据库中,我的main_building级别为1.

每隔一张桌子都是空的.

当调用avaliableBuildingBuildings时,我得到这条线下的输出,这将列出我可以创建的建筑物.你可以看到main_building的要求是3,那么就不应该创建营房.

问:我怎样才能修复我的代码,以便它能真正地给我一些我可以构建的建筑物?

当前输出:

array(5) {

["barracks"]=>

array(2) {

["max"]=>

int(1)

["requirements"]=>

array(2) {

["main_building"]=>

int(3)

["rally_point"]=>

int(1)

}

}

["blacksmith"]=>

array(2) {

["max"]=>

int(1)

["requirements"]=>

array(3) {

["main_building"]=>

int(3)

["academy"]=>

int(3)

["barracks"]=>

int(3)

}

}

["embassy"]=>

array(2) {

["max"]=>

int(1)

["requirements"]=>

array(1) {

["main_building"]=>

int(1)

}

}

["marketplace"]=>

array(2) {

["max"]=>

int(1)

["requirements"]=>

array(3) {

["warehouse"]=>

int(1)

["granary"]=>

int(1)

["main_building"]=>

int(3)

}

}

["palace"]=>

array(2) {

["max"]=>

int(1)

["requirements"]=>

array(3) {

["main_building"]=>

int(5)

["embassy"]=>

int(1)

["residence"]=>

int(0)

}

}

}

完整代码:

function isBuilt($villageid,$name) {

$buildinginfo = $this->buildinginfo();

$thisBuilding = $buildinginfo[$name];

$built = $this->CI->db->query("SELECT * from `$name` where `villageid`='$villageid'")->row();

return ($built ? $built : false);

}

function requirementsDone($villageid,$name) {

$buildinginfo = $this->buildinginfo()[$name];

$canbebuilt = true;

if (isset($buildinginfo['requirements'])) {

$requirements = $buildinginfo['requirements'];

foreach ($requirements as $reqname => $level) {

$building = $this->isBuilt($villageid,$reqname);

if ($building) {

echo "needs that $reqname (".$building->level.")is higher than $level to build $name
";

if ($building->level >= $level) {

echo "
$reqname is acually higher !
";

} else {

echo " i cant acually build this..
";

$canbebuilt = false;

break;

}

} else {

$canbebuilt = false;

break;

}

}

}

if ($canbebuilt) {

echo "result to build $name is true
";

} else {

echo "result to build $name is false
";

}

return $canbebuilt;

}

function existingBuildings($villageid) {

$buildinginfo = $this->buildinginfo();

$buildings = array();

foreach($buildinginfo as $name => $array) {

$built = $this->isBuilt($villageid,$name);

if ($built) {

$buildings[$name] = $built;

}

}

return $buildings;

}

function avaliableBuildingBuildings($villageid) {

$avaliable = $this->avaliableBuildings($villageid);

$tobuild = array();

foreach($avaliable as $name => $built) {

if (isset($built['requirements'])) {

$req = $built['requirements'];

foreach ($req as $reqname => $level) {

$canbuild = $this->requirementsDone($villageid,$reqname);

if ($canbuild) {

echo "verify to build $reqname is true
";

$tobuild[$name] = $avaliable[$name];

} else {

echo "verify to build $reqname is false
";

break;

}

}

} else {

}

}

return $tobuild;

}

function avaliableBuildings($villageid) {

$buildinginfo = $this->buildinginfo();

foreach($this->existingBuildings($villageid) as $name => $built) {

if (array_key_exists($name,$buildinginfo)) {

unset($buildinginfo[$name]);

echo "removing $name
";

}

}

return $buildinginfo;

}

function buildinginfo() {

$info = array(

'academy' => array('max' => 1),'barracks' => array('max' => 1,'requirements' => array(

'main_building' => 3,'rally_point' => 1,)

),'main_building' => array('max' => 1,'requirements' => array(

'main_building' => 1,'greatbarracks' => array('max' => 1),'greatstable' => array('max' => 1),'heromansion' => array('max' => 1),'rally_point' => array('max' => 1),'stable' => array('max' => 1,'requirements' => array(

'blacksmith' => 3,'academy' => 5,'blacksmith' => array('max' => 1,'requirements' => array(

'main_building' => 3,'academy' => 3,'barracks' => 3,'forge' => array('max' => 1),'tournament_square' => array('max' => 1),'trapper' => array('max' => 1),'cranny' => array('max' => 1),'embassy' => array('max' => 1,'requirements' => array(

'main_building' => 1

)

),'marketplace' => array('max' => 1,'requirements' => array(

'warehouse' => 1,'granary' => 1,'main_building' => 3

)

),'palace' => array('max' => 1,'requirements' => array(

'main_building' => 5,'embassy' => 1,'residence' => 0

)

),'residence' => array('max' => 1),'town_hall' => array('max' => 1),'trade_office' => array('max' => 1),'treasury' => array('max' => 1),'granary' => array('max' => 99,'new' => 20),'warehouse' => array('max' => 99,'new' => 20)

);

return $info;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值