Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式化PHP记录集中的信息并将其设置为数组_Php - Fatal编程技术网

格式化PHP记录集中的信息并将其设置为数组

格式化PHP记录集中的信息并将其设置为数组,php,Php,我正在尝试使用一个管理器类来获取查询结果,并对信息片段进行格式化,这样我就不必在视图中使用逻辑。我在谷歌上搜索了许多解决方案,并认为这是可行的,但我的Key=>值数组返回为空。有人能看看我做错了什么吗?谢谢 我已验证$results包含我试图格式化并放回数组中的值 while($row = mysqli_fetch_array($results)){ $pets[$row['petID']] = $row['petID']; $pets[$row['chipID']]=$row[

我正在尝试使用一个管理器类来获取查询结果,并对信息片段进行格式化,这样我就不必在视图中使用逻辑。我在谷歌上搜索了许多解决方案,并认为这是可行的,但我的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;
    }

嗯。。。。我不确定你想要什么,但是你现在有了它,你的数组的键和值将是相同的,这使得它毫无用处

i、 e.宠物名
$pets['Fido']='Fido'

也许你想去掉作业左侧的
$行
部分,这样你就可以完成这个任务了

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);
}

这将在每次循环记录时重写$pets[KEY]。你想要

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

诸如此类

我猜,但我明白你想要的是:

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作为第一个键,其详细信息在第二个键中。您也可以使用阵列推送。

这相当于。。。重复代码。。。修改查询以获取所需的行,并且直接在数据库中设置日期格式,不是更容易吗

e、 g

然后

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

谢谢我正在尝试将键设置为“”中的名称,将值设置为记录集中的匹配项。由于它们有许多行,所以也会增加它。我的目标是这样的(非常伪):第1行=petID=1,petName='Fluffy',status='Adopted',等第2行=petID=2,petName='Barker',status='Available',等第3行=petID=40,petName='Meowintons',status='Available',等等。通过删除该行,它会不会继续覆盖自己?我想这是最接近的了。我只是想用修改过的数据填充数据行。好啊那么,我是否要在页面上回显上述集合的第0行?请尝试并查看:)
print\u var($pets[0])
应打印出包含所有字段的第一个pet。虽然我也会研究Marc B提供的答案。自己尝试一些事情,直到了解发生了什么。不,我不希望它被覆盖,只需添加一个新行即可。:)就我所知,以上这些应该可以解决你的问题。关闭后}添加
打印($pets)
查看结果这意味着sql没有结果。我看到你的编辑。类在函数中运行。我真的不知道这是怎么回事,所以我的帮助和输入到此为止。我建议您使用
或die(mysql_error())在函数和类之外单独运行查询
查看是否有任何错误。然后查看是否有结果,然后进入函数和类。:)祝你好运谢谢你的帮助。它确实返回一个值。我想我看到问题的一部分是不理解如何在PHP中创建关联数组。我认为我的下一次编辑更接近我应该做的。我确实在函数的底部返回宠物,但它一直是空的。
while($row = mysql_fetch_assoc($result)) {
   $pets[] = $row;
}