在PHP记录集中格式化信息并将其设置为Array

时间:2012-09-30 22:39:42

标签: php

我正在尝试使用Manager类来获取查询结果并对信息进行格式化,因此我不必在视图中使用逻辑。我用Google搜索了一些解决方案并认为这样可行,但我的Key =>值数组又回来了。有人可以看看它,看看我做错了什么?谢谢!

我已经验证$ results包含我尝试格式化的值并放回到数组中。

while($row = mysqli_fetch_array($results)){
    $pets[$row['petID']] = $row['petID'];
    $pets[$row['chipID']]=$row['chipID'];
    $pets[$row['adoptionDate']]=Date($row['adoptionDate'],'m-d-Y');
    $pets[$row['pType']]=$row['pType'];
    $pets[$row['breedName2']]=$row['breedName2'];
    $pets[$row['breedName1']]=$row['breedName1'];
    $pets[$row['imageName']]=$row['imageName'];
    $pets[$row['intakeDate']]= Date($row['intakeDate'],'m-d-Y');
    $pets[$row['status']]=$row['status'];
    $pets[$row['age']]=$row['age'];
    $pets[$row['ageText']]= $this->getAge($row['age']);
    $pets[$row['gender']]=$row['gender'];
    $pets[$row['genderText']] = $this->getGender($row['gender']);
    $pets[$row['breed2']]=$row['breed2'];
    $pets[$row['breed']]=$row['breed'];
    $pets[$row['petType']]=$row['petType'];
    $pets[$row['petName']]=$row['petName'];
    $pets[$row['customID']]=$row['customID'];
}

这是完整的函数,不会返回任何内容:

public function getPets($cond,$orgID){

        $pets = array();
        $pg = new petsGateway();
        $results = $pg->listByQuery($cond, $orgID);

        while($row = mysqli_fetch_array($results)){
            $pets[$row['petID']] = $row['petID'];
            $pets[$row['chipID']]=$row['chipID'];
            $pets[$row['adoptionDate']]=Date($row['adoptionDate'],'m-d-Y');
            $pets[$row['pType']]=$row['pType'];
            $pets[$row['breedName2']]=$row['breedName2'];
            $pets[$row['breedName1']]=$row['breedName1'];
            $pets[$row['imageName']]= $this->getImageURL($row['imageName']);
            $pets[$row['intakeDate']]= Date($row['intakeDate'],'m-d-Y');
            $pets[$row['status']]=$row['status'];
            $pets[$row['age']]=$row['age'];
            $pets[$row['ageText']]= $this->getAge($row['age']);
            $pets[$row['gender']]=$row['gender'];
            $pets[$row['genderText']] = $this->getGender($row['gender']);
            $pets[$row['breed2']]=$row['breed2'];
            $pets[$row['breed']]=$row['breed'];
            $pets[$row['petType']]=$row['petType'];
            $pets[$row['petName']]=$row['petName'];
            $pets[$row['customID']]=$row['customID'];
        }
        return $pets;
    }

4 个答案:

答案 0 :(得分:1)

那是相当重复的代码...修改查询以获取您想要的行 AND 直接在数据库中进行日期格式化会不会更容易?

e.g。

SELECT rowID, ... DATE_FORMAT(adoptionDate, '%m-%d-%Y'), ...
FROM ...

然后

while($row = mysql_fetch_assoc($result)) {
   $pets[] = $row;
}

答案 1 :(得分:0)

嗯....好吧我不确定你想要什么,但是现在你已经拥有它,你的数组的键和值将是相同的,这使得它无用。

即。为petName $pets['Fido'] = 'Fido'

可能你想要摆脱作业左侧的$row部分,以便最终得到这个

while($row = mysqli_fetch_array($results))
{
    $pet = Array();

    $pet['petID']        = $row['petID'];
    $pet['chipID']       = $row['chipID'];
    $pet['adoptionDate'] = Date($row['adoptionDate'],'m-d-Y');
    $pet['pType']        = $row['pType'];
    $pet['breedName2']   = $row['breedName2'];
    $pet['breedName1']   = $row['breedName1'];
    $pet['imageName']    = $row['imageName'];
    $pet['intakeDate']   = Date($row['intakeDate'],'m-d-Y');
    $pet['status']       = $row['status'];
    $pet['age']          = $row['age'];
    $pet['ageText']      = $this->getAge($row['age']);
    $pet['gender']       = $row['gender'];
    $pet['genderText']   = $this->getGender($row['gender']);
    $pet['breed2']       = $row['breed2'];
    $pet['breed']        = $row['breed'];
    $pet['petType']      = $row['petType'];
    $pet['petName']      = $row['petName'];
    $pet['customID']     = $row['customID'];

    $pets.push($pet);
}

答案 2 :(得分:0)

每次循环记录时,都会重写$ pets [KEY]。你想.. ..

$pets[]['petID'] = $row['petID'];
$pets[]['chipID'] = $row['chipID'];

等等

答案 3 :(得分:0)

我在猜,但我明白你想要一些像:

while($row = mysqli_fetch_array($results)){
    $pets[$row['petID']]['petID']        = $row['petID'];
    $pets[$row['petID']]['chipID']       = $row['chipID'];
    $pets[$row['petID']]['adoptionDate'] = Date($row['adoptionDate'],'m-d-Y');
    $pets[$row['petID']]['pType']        = $row['pType'];
    $pets[$row['petID']]['breedName2']   = $row['breedName2'];
    $pets[$row['petID']]['breedName1']   = $row['breedName1'];
    $pets[$row['petID']]['imageName']    = $row['imageName'];
    $pets[$row['petID']]['intakeDate']   = Date($row['intakeDate'],'m-d-Y');
    $pets[$row['petID']]['status']       = $row['status'];
    $pets[$row['petID']]['age']          = $row['age'];
    $pets[$row['petID']]['ageText']      = $this->getAge($row['age']);
    $pets[$row['petID']]['gender']       = $row['gender'];
    $pets[$row['petID']]['genderText']   = $this->getGender($row['gender']);
    $pets[$row['petID']]['breed2']       = $row['breed2'];
    $pets[$row['petID']]['breed']        = $row['breed'];
    $pets[$row['petID']]['petType']      = $row['petType'];
    $pets[$row['petID']]['petName']      = $row['petName'];
    $pets[$row['petID']]['customID']     = $row['customID'];
}

这样你就有了一个数组,其中所有的宠物ID都是第一把钥匙,第二把钥匙的细节。您也可以使用数组推送。