Funkcja zwracająca wiele wierszy

0

Zadając pytanie w sql, dostajemy nieraz wiele wierszy, które bardzo łatwo możemy np. zapisać w tabeli, używając funkcji:

foreach($result as $row)

Przykładowo. Aktualnie tworzę funkcję, która zawiera wiele danych osobowych (imię, nazwisko, wiek, miasto). Pytanie: Jak to zwrócić w taki sam sposób? Nie byłoby problemem, gdybym zwracał jedną rubrykę (jedno imię, nazwisko, wiek), wszystko wtedy można wpakować do tablicy asocjacyjnej i jest po kłopocie. Ale jak w przypadku operowania na dużej ilości wierszy, które następnie chcę zwrócić w formie jednej tablicy, gdzie następnie każdy z nich zostanie "przemielony" przez foreach? Myślałem o tablicy dwuwymiarowej, ale wpisując do niej unikatowe id jako identyfikujące pojedynczą osobę, nie wiedzielibyśmy, które wiersze tej tablicy są wypełnione jaką liczbą.

2

nie czaje, możesz jaśniej? Chcesz stworzyć tablice dwuwymiarowa gdzie pierwszy wymiar to id unikalne a nie key a drugi wymiar to tekst? No i w czym problem? możesz przecież odczytać ten "id"

foreach ($array as $id => $value) {
     ...
}
0

Nie ma problemu z utworzeniem tablicy dwuwymiarowej (ale co do jej charakteru, to tak jak napisałeś: pierwszy wymiar to id charakteryzujące jednoznacznie osobę, a dalsze wymiary to string (je już znamy za każdym razem)). Mój problem był taki, że nie wiedziałem, jak tego foreacha użyć w takim wypadku.Więc czy zadziałałby taki zapis jak poniżej?

 public static function calculateAverage($number, $finalDetails, $f, $m)
    {
        $finalDetails[$number]['femAvgRate'] /= $f;
        $finalDetails[$number]['femAvgAge'] /= $f;
        $finalDetails[$number]['maleAvgRate'] /= $m;
        $finalDetails[$number]['maleAvgAge'] /= $m;

        return $finalDetails;
    }

Odbieramy funkcję:

$result =  calculateAverage($number, $finalDetails, $f, $m);
$foreach($result as $row)
{
echo $row['maleAvgAge'];
}
1

Tak

0
darkrat napisał(a):

Nie ma problemu z utworzeniem tablicy dwuwymiarowej (ale co do jej charakteru, to tak jak napisałeś: pierwszy wymiar to id charakteryzujące jednoznacznie osobę, a dalsze wymiary to string (je już znamy za każdym razem)). Mój problem był taki, że nie wiedziałem, jak tego foreacha użyć w takim wypadku.Więc czy zadziałałby taki zapis jak poniżej?

 public static function calculateAverage($number, $finalDetails, $f, $m)
    {
        $finalDetails[$number]['femAvgRate'] /= $f;
        $finalDetails[$number]['femAvgAge'] /= $f;
        $finalDetails[$number]['maleAvgRate'] /= $m;
        $finalDetails[$number]['maleAvgAge'] /= $m;

        return $finalDetails;
    }

Odbieramy funkcję:

$result =  calculateAverage($number, $finalDetails, $f, $m);
$foreach($result as $row)
{
echo $row['maleAvgAge'];
}

A czym tutaj jest number? sprawdzałeś chociaż strukturę tej tablicy przez print_r? to byś wiedział czemu masz notice...
Skoro w wywołaniu podajesz tylko jeden numer to po co pętla? wystarczy sie odwoływać $ar[numer][string]

1

Może użyj takiej konstrukcji:

$row = $result->fetch_array(MYSQLI_NUM);

Zamiast MYSQLI_NUM możesz wpisać inną stałą, np.: MYSQLI_ASSOC.

1 użytkowników online, w tym zalogowanych: 0, gości: 1