Saya punya kode ini:

{...}

$data = $sql->QueryDB("SELECT fdNum AS Num, fdUserNum AS User FROM my_table 
ORDER BY fdNum DESC LIMIT 100;")->fetch_all(MYSQLI_ASSOC);      
echo json_encode($data);

Itu memberi saya array berikut.

[{"Num":"195993","User":"345"},
{"Num":"195992","User":"234"},
{"Num":"195991","User":"845"}]

Tetapi saya ingin menggunakan fungsi untuk nomor pengguna (fdUserNum AS User) sebelum menghasilkan, itu adalah fungsi sederhana yang disebut getUsername() dan hanya menemukan nama pengguna yang diberikan nomor pengguna dalam array.

Jadi, jika saya menempatkan fungsi di suatu tempat di array keluaran, itu akan ada di sini:

[{"Num":"195993","User":"getUsername(345)"},
{"Num":"195992","User":"getUsername(234)"},
{"Num":"195991","User":"getUsername(845)"}]

Tetapi saya sepertinya tidak bisa mengerti bagaimana membedah array seperti itu dan saya belum beruntung googling itu. Apakah Anda tahu bagaimana ini dapat diterima?

0
Finneas. 25 Mei 2021, 16:26

1 menjawab

Jawaban Terbaik

Jika nama pengguna juga disimpan dalam database, Anda ingin melakukannya melalui Gabung dalam SQL:

SELECT 
    user.username,
    ...
FROM 
    my_table, user 
WHERE 
    my_table.fdUserNum = user.userNum 
...

Jika Anda memiliki nama pengguna yang tersimpan dalam aplikasi itu sendiri atau dalam layanan eksternal (dalam hal ini, ketahuilah bahwa Anda akan membuat 100 permintaan ke layanan itu dan mungkin akan lebih baik dengan mengumpulkan permintaan), a {{x0} } Fungsi harus berfungsi dengan baik:

foreach ($data as &$row) { 
    $row['User'] = getUsername($row['User']); 
}

unset($row);

& membuat baris sebagai referensi, memungkinkan Anda untuk mengubah konten array dalam secara langsung. unset setelah loop adalah untuk memastikan Anda tidak secara tidak sengaja mengubah $row setelah loop.

Anda juga dapat melakukannya melalui indeks:

foreach ($data as $idx => $row) { 
    $data[$idx]['User'] = getUsername($row['User']); 
}

Anda juga dapat menggunakan array_map dengan mengisi kunci dan mengembalikan array yang dihasilkan, secara efektif mengganti yang lama dalam array:

function populateUsername($row) {
    $row['User'] = getUsername($row['User']);
}

$data = array_map('populateUsername', $data);
0
MatsLindh 25 Mei 2021, 13:34