Я пытаюсь написать функцию, которая подсчитывает изображение при прохождении через файлы для одного случая (из многих случаев), я объявила переменную $imageCount
глобальной функцией copyInsertImage
, чтобы после изображения успешно вставлен в базу данных, я делаю $imageCount++
.PHP-счетчик не сбрасывается
После обработки всех изображений для корпуса код выходит из цикла, функция processImages
будет вызвана снова. Тем не менее, я сделал var_dump($imageCount)
, чтобы распечатать счетчик изображений каждый раз, когда он увеличивается на один, и выяснил, что он не возвращался обратно 0 к $imageCount = 0
при запуске цикла для нового случая.
Мне интересно, связано ли это с объявлением global $imageCount
, потому что код работал отлично раньше, чем группировать один и тот же скрипт в функцию. Если да, то каково решение?
Спасибо!
function processImages($path,$patientID,$caseID)
{
// $path = rootDirectory/patientID
global $targetDirectory;
$targetPath = $targetDirectory.$patientID;
$caseSummaryFolder = $path."/".$caseID."/Summary";
$srcDirPath=$path."/".$caseID."/Summary/slicesdir"; //AKA src
$dstDirPath = $targetPath."/".$caseID;
//copyCaseImages($caseSummaryFolder,$targetCasePath,$patientID,$caseID);
global $status;
// print("processImages case path:".$casePath."</br>");
$files = glob($srcDirPath."/*.png");
echo "\n------------NEW CASE------------\n"
echo "PATIENT: $patientID \n";
echo "CASE: $caseID \n";
echo "--------------------------------\n"
$imageCount = 0;
for($i = 0; $i < count($files); $i++) {
$file = $files[$i];
$fileName = str_ireplace($srcDirPath."/", "", $file);
// if image name doesn't not contain string 'GROT'
if(strripos($fileName, "grot") === false)
{
if(doesImgExist($fileName)!==NULL) {
if (compareFileMTime($srcDirPath,$fileName,doesImgExist($fileName))) {
echo "There's a newer version of $fileName \n";
copyInsertImage($srcDirPath,$dstDirPath,$fileName,$patientID,$caseID);
}
else {
$imageCount++;
}
}
// copy image to analyzedCp and insert new image into DB
else {
copyInsertImage($srcDirPath,$dstDirPath,$fileName,$patientID,$caseID);
}
}
else {
echo "grot*.png files are not included \n";
}
}
Вместо того чтобы сделать его глобальным, почему бы вам не передать эту переменную в функцию? Затем верните обновленный файл $ imageCount – JRizz
Не нужно ли объявлять '$ imageCount' как глобальное в' processImages() 'тоже? В противном случае вы используете только локальную переменную. – andrewsi
Итак, где $ imageCount определяется как глобальный? –