Saya sedang mengembangkan aplikasi php yang menggunakan kelas database untuk menanyakan mySQL.
kelasnya ada di sini: //net.tutsplus.com/tutorials/php/real-world-oop-with-php-and-mysql/
Saya membuat beberapa penyesuaian di kelas untuk memenuhi kebutuhan saya, tetapi ada masalah [mungkin yang bodoh]
Saat menggunakan select [] ia mengembalikan array multidimensi seperti itu untuk tabel yang memiliki 3 cols [id, firstname, lastname]:
Array [ [0] => Array [ [Id] => 1 [Nama depan] => Nama depan satu [Nama belakang] => Nama belakang ] [1] => Array [ [Id] => 2 [Nama depan] => Nama depan dua [Nama belakang] => Nama belakang dua ] [2] => Array [ [Id] => 3 [Nama depan] => Nama depan tiga [Nama belakang] => Nama belakang tiga ] ]
Sekarang saya ingin array ini digunakan sebagai hasil mysql [mysql_fetch_assoc].
Saya tahu bahwa ini dapat digunakan dengan foreach [] tapi ini dengan array sederhana. jadi saya pikir saya harus mendeklarasikan foreach baru [] dengan masing-masing foreach [], tapi saya pikir ini bisa memperlambat atau menyebabkan beban server yang lebih tinggi.
Jadi bagaimana menerapkan foreach [] dengan array multidimensi ini dengan cara paling sederhana?
Terima kasih
Anda dapat menggunakan foreach di sini dengan baik.
foreach [$rows as $row] {
echo $row['id'];
echo $row['firstname'];
echo $row['lastname'];
}
Saya pikir Anda terbiasa mengakses data dengan indeks numerik [seperti $row[0]
], tetapi ini tidak perlu. Kita dapat menggunakan
array asosiatif untuk mendapatkan data yang kita cari.
Anda dapat menggunakan array_walk_recursive
:
array_walk_recursive[$array, function [$item, $key] {
echo "$key holds $item\n";
}];
Ini akan menjadi komentar di bawah jawaban Brad, tetapi saya tidak memiliki reputasi yang cukup tinggi.
Baru-baru ini saya menemukan bahwa saya memerlukan kunci array multidimensi juga, yaitu, bukan hanya indeks untuk array, di loop foreach.
Untuk mencapai itu, Anda bisa menggunakan sesuatu yang sangat mirip dengan jawaban yang diterima, tetapi sebaliknya bagi kunci dan nilai sebagai berikut
foreach [$mda as $mdaKey => $mdaData] {
echo $mdaKey . ": " . $mdaData["value"];
}
Semoga itu bisa membantu seseorang.
Holla/Halo , Saya mengerti! Anda dapat dengan mudah mendapatkan nama file, tmp_name, file_size dll. Jadi saya akan menunjukkan kepada Anda cara mendapatkan nama file dengan garis kode.
for [$i = 0 ; $i < count[$files['name']]; $i++] {
echo $files['name'][$i].'
';
}
Ini diuji pada PC saya.
Contoh dengan mysql_fetch_assoc[]
:
while [$row = mysql_fetch_assoc[$result]]
{
/* ... your stuff ...*/
}
Dalam kasus Anda dengan foreach
, dengan array $result
Anda dapatkan dari select[]
:
foreach [$result as $row]
{
/* ... your stuff ...*/
}
Ini hampir sama, dengan iterasi yang tepat.
Untuk mendapatkan detail dari setiap nilai dalam array multidimensi cukup mudah setelah Anda memiliki array Anda di tempat. Jadi inilah arraynya:
$example_array = array[
array['1','John','Smith'],
array['2','Dave','Jones'],
array['3','Bob','Williams']
];
Kemudian gunakan foreach loop dan jalankan array seperti ini:
foreach [$example_array as $value] {
echo $value[0]; //this will echo 1 on first cycle, 2 on second etc....
echo $value[1]; //this will echo John on first cycle, Dave on second etc....
echo $value[2]; //this will echo Smith on first cycle, Jones on second etc....
}
Anda dapat menggemakan apa pun yang Anda suka di sekitarnya, jadi gema ke dalam tabel:
echo ""
foreach [$example_array as $value] {
echo "" . $value[0] . " ";
echo "" . $value[1] . " ";
echo "" . $value[2] . " ";
}
echo "
";
Harus memberi Anda tabel seperti ini:
|1|John|Smith |
|2|Dave|Jones |
|3|Bob |Williams|
Dengan array dalam php, loop foreach selalu merupakan solusi yang cantik.
Dalam hal ini bisa jadi misalnya:
foreach[$my_array as $number => $number_array]
{
foreach[$number_array as $data = > $user_data]
{
print "Array number: $number, contains $data with $user_data.
";
}
}
Idealnya array multidimensi biasanya array array jadi saya pikir mendeklarasikan array kosong, kemudian membuat pasangan kunci dan nilai dari hasil db dalam array terpisah, akhirnya Dorong setiap array yang dibuat pada iterasi ke array luar. Anda dapat mengembalikan array luar jika ini adalah panggilan fungsi yang terpisah. Semoga itu bisa membantu
$response = array[];
foreach [$res as $result] {
$elements = array["firstname" => $result[0], "subject_name" => $result[1]];
array_Push[$response, $elements];
}
Saya tahu ini jawaban yang cukup lama. Berikut adalah solusi yang lebih cepat tanpa menggunakan foreach
Gunakan
array_column
print_r[array_column[$array, 'firstname']]; #returns the value associated with that key 'firstname'
Anda juga dapat memeriksa sebelum menjalankan operasi di atas
if[array_key_exists['firstname', $array]]{
print_r[array_column[$array, 'firstname']];
}
Jika Anda perlu melakukan manipulasi string pada elemen array, mis., Kemudian menggunakan fungsi callback array_walk_recursive [atau bahkan array_walk ] berfungsi dengan baik. Keduanya berguna ketika secara dinamis menulis pernyataan SQL.
Dalam penggunaan ini, saya memiliki array ini dengan setiap elemen membutuhkan koma dan baris baru yang ditambahkan.
$some_array = [];
data dalam $ some_array
0: "Beberapa string dalam array"
1: "String lain dalam array"
Per php.net
Jika callback perlu bekerja dengan nilai aktual array, tentukan parameter panggilan balik pertama sebagai referensi. Lalu, apapun perubahan yang dilakukan pada elemen-elemen tersebut akan dilakukan dalam array asli diri.
array_walk_recursive[$some_array, function [&$value, $key] {
$value .= ",\n";
}];
Hasil:
"Beberapa string dalam array,\n"
"String lain dalam array,\n"
Berikut konsep yang sama menggunakan array_walk untuk menambahkan nama tabel database ke bidang.
$fields = [];
data dalam $ bidang:
0: "Nama Depan"
1: "Nama Belakang"
$tbl = "Employees"
array_walk[$fields, 'prefixOnArray', $tbl."."];
function prefixOnArray[&$value, $key, $prefix] {
$value = $prefix.$value;
}
Hasil:
"Karyawan.Nama Pertama"
"Karyawan.Nama Terakhir"
Saya akan ingin tahu apakah kinerja dipermasalahkan di muka, tetapi untuk array dengan beberapa elemen, IMHO, itu hampir tidak layak untuk dipertimbangkan.
Tidakkah foreach normal pada dasarnya menghasilkan hasil yang sama dengan mysql_fetch_assoc dalam kasus Anda?
saat menggunakan foreach pada array itu, Anda akan mendapatkan array yang berisi tiga kunci: 'id', 'firstname' dan 'lastname'.
Itu harus sama dengan yang akan diberikan mysql_fetch_assoc [dalam satu lingkaran] untuk setiap baris.
foreach [$parsed as $key=> $poke]
{
$insert = mysql_query["insert into soal
[pertanyaan, a, b, c, d, e, jawaban]
values
['$poke[question]',
'$poke[options][A]',
'$poke[options][B]',
'$poke[options][C]',
'$poke[options][D]',
'$poke[options][E]',
'$poke[answer]']"];
}