系统在最后一个if上给我一个错误。 $ nomeportefolio上的未定义变量。在非对象上调用成员函数()addideasportefolio。 如果我将这2行移动到if之前更改函数变量,它可以工作,但我需要它在最后如果!有人可以帮忙吗?
<?php
include ("Ideia.php");
$handle = @fopen("C:\Users\Bia\Desktop\Projecto ES/input.txt", "r");
if ($handle) {
$booleanuser = FALSE;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
$partial = substr($buffer, 0, 4);
$nomeuser;
$iduser;
$saldo = substr($buffer, 0, 5);
$portefolio = substr($buffer, 0, 9);
$nomeportefolio;
if ($partial == "user") {
$booleanuser = TRUE;
$nomeuser=substr($buffer, 0, 5);
$iduser=substr($buffer, 4, 1);
$nomeuser = new User($iduser);
}
if ($booleanuser == FALSE) {
if ($partial == "idea") {
$nomeideia=substr($buffer, 0, 5);
$idideia=substr($buffer, 4, 1);
$nomeideia = new Ideia($idideia);
}
}
if ($saldo == "Saldo"){
$nomeuser->addsaldo(substr($buffer, 7));
echo $nomeuser->greetuser();
}
if ($portefolio == "Portfolio"){
$nomeportefolio="portefolio".$iduser;
$nomeportefolio = new Portefolio($iduser,$iduser);
}
if ($partial == "idea"){
$nomeportefolio->addideiasportefolio($iduser,$iduser);
//função que mostra os ids das ideias no portefólio
echo $nomeportefolio->mostraportefolio();
}
}
fclose($handle);
}
答案 0 :(得分:0)
您在一段时间内在if语句中设置$nomeportefolio
。正好if ($partial == "idea")
条件* 调用 $nomeportefolio
但是没有设置它,你冒着在$portefolio !== "Portfolio"
的循环中存在的风险,所以它没有设置。您需要做的是提出&#34;想法&#34;检查投资组合中的if语句:
if ($portefolio == "Portfolio"){
$nomeportefolio="portefolio".$iduser;
$nomeportefolio = new Portefolio($iduser,$iduser);
if ($partial == "idea"){
$nomeportefolio->addideiasportefolio($iduser,$iduser);
//função que mostra os ids das ideias no portefólio
echo $nomeportefolio->mostraportefolio();
}
}
答案 1 :(得分:0)
错误Call to a member function on a non-object
表示您正在尝试对不是对象的变量使用函数。
在这种情况下,$nomeportefolio->addideiasportefolio($iduser,$iduser);
但为什么会发生什么?很简单,您只是将$nomeportefolio
设置为代码的以下部分的Portefolio
类的实例:
if ($portefolio == "Portfolio"){
$nomeportefolio="portefolio".$iduser;
$nomeportefolio = new Portefolio($iduser,$iduser);
}
但如果$portefolio
不等于“投资组合”但$partial
等于“idea”?
简单:P它尝试在{{1>}上调用非对象上的函数->addideiasportefolio()
,因为$nomeportefolio
没有执行;)