如何在PHP sql中返回的行上进行迭代并将每个值存储在不同的变量中

时间:2018-07-13 07:47:22

标签: php

我有一个函数返回如下一行值

 fldClientID    fldPetID    fldName    fldBreed             fldType   fldInactive
> 1406          114        Lola         Poodle - Toy          Dog           0 
  1406          5786       Izadora      Chihuahua long hair   Dog           0 
  1406          8728       Kurmo        Maltese Mix           Dog           0

每个宠物的宠物ID不同,但是相同的客户ID,我需要一种方法来遍历返回的复现集并将每个宠物存储在变量中,例如

PETNAME1= lola      PETBREED1= Poodle-To
PETNAME2= Izadora   PETBREED2 =chihuahua long hair

我尝试过这段代码,但是一直只存储第一个宠物

  $pets=$this->readPet();

   While(next($pets))
     {
         $petname1=$pets['fldName'];
         $petbreed1=$pets['fldBreed'];

        $petname2=$pets['fldName'];
        $petbreed2=$pets['fldBreed'];
     }

1 个答案:

答案 0 :(得分:0)

您可以显示您已经尝试过的内容。一些代码可能会很好。 无论如何,像这样:

$pets = [];
foreach ($rows as $row) {
    $pets[$row->fldName] = $row->fldBreed;
}

编辑:如果要使用键作为宠物名称和值作为品种的数组。

编辑#2:具有动态变量分配。这仅用于教育目的。这是处理数据迭代的非常糟糕的方法。

$counter = 0;
while($counter < count($pets)){
    ${'petname' . ($counter+1)} = $pets[$counter]['fldName'];
    ${'petbreed' . ($counter+1)} = $pets[$counter]['fldBreed'];
    $counter = $counter + 1;
}

echo $petname1;
echo ' - ' . $petbreed1;
echo "<br>";
echo $petname2;
echo ' - ' . $petbreed2;

更好的解决方案是使用类似array_column()的方法来修改数组。

$pets = array_column($arr, 'fldBreed', 'fldName');
var_dump($pets);