Bagaimana cara menggabungkan nama variabel PHP?

Saya memiliki loop for PHP:

for ($counter=0,$counter<=67,$counter++){

echo $counter;
$check="some value";

}

Apa yang ingin saya capai adalah menggunakan variabel loop for dan menambahkannya ke nama variabel lain.

Pada dasarnya, saya ingin keluaran PHP sebagai berikut untuk setiap baris

1
$check1="some value"

2
$check2="some value"

3
$check3="some value"

4
$check4="some value"

etc etc 

Saya telah mencoba $check.$counter="some value" tetapi gagal.

Bagaimana saya bisa mencapainya? Apakah saya melewatkan sesuatu yang jelas?


person Smudger    schedule 31.07.2012    source sumber
comment
Apakah penggunaan array lebih disukai daripada metode ini? $myVar = array(); for($i = 0; $i <= 67; $i++) { $myVar[] = "Some Value"; }   -  person Matt    schedule 31.07.2012


Jawaban (4)


Sintaks yang tepat untuk variabel variabel adalah:

${"check" . $counter} = "some value";

Namun, saya sangat tidak menyarankan hal ini. Apa yang ingin Anda capai kemungkinan besar dapat diselesaikan dengan lebih elegan dengan menggunakan array. Contoh penggunaan:

// Setting values
$check = array();
for ($counter = 0; $counter <= 67; $counter++){
    echo $counter;
    $check[] = "some value";
}

// Iterating through the values
foreach($check as $value) {
    echo $value;
}
person Tim Cooper    schedule 31.07.2012
comment
Terima kasih Tim, apakah ada situasi di mana hal ini dapat diterima atau fungsinya tidak lagi digunakan? - person Smudger; 31.07.2012
comment
@Smudger: Di luar kepala saya, saya tidak bisa memikirkan kasus yang solid di mana seseorang akan menggunakan variabel variabel. Melihat komentar di halaman dokumentasi mungkin bisa memberi Anda beberapa informasi ide-ide tentang di mana mereka bisa berguna. Ingatlah bahwa apa yang Anda baca di sana mungkin tidak dianggap sebagai praktik terbaik. - person Tim Cooper; 31.07.2012
comment
Penggabungan tidak pernah merupakan solusi yang lebih bersih, tetapi mungkin ada kasus di mana Anda memiliki kode lama yang sangat berkembang yang tidak pernah dimaksudkan untuk mengkorelasikan A+B yang mana hal ini jauh lebih mudah dilakukan daripada menulis ulang ratusan baris kode hanya untuk mengganti variabel lama mengetik dengan array - person Nosajimiki; 14.07.2017
comment
Satu-satunya kasus yang dapat saya pikirkan di mana saya menggunakannya adalah dengan formulir HTML di mana saya membuat input secara rekursif. Ketika Anda mempostingnya, itu akan diposting sebagai sekumpulan variabel dan bukan sebagai array; jadi, memanggil mereka secara rekursif mungkin lebih mudah dengan $_POST[${myInputName.$i}] - person Nosajimiki; 14.07.2017

Anda harus menggunakan sintaks ${'varname'}:

for ($counter=0,$counter<=67,$counter++){
    echo $counter;
    ${'check' . $counter} ="some value";
}

ini akan berhasil, tetapi mengapa tidak menggunakan array saja?

$check[$counter] = "some value";
person Adunahay    schedule 31.07.2012

Ini dapat digunakan dalam beberapa kasus. Misalnya jika aplikasi Anda memiliki sekitar 2 entri bahasa di DB.

echo $this->{'article_title_'.$language};

Itu jauh lebih bermanfaat daripada misalnya ini;

if($language == 'mylanguage1')
    echo $this->article_title_mylanguage1;
else
    echo $this->article_title_mylanguage2;

Jelas ini adalah apa yang tidak perlu Anda lakukan di aplikasi multibahasa Anda, tetapi saya pernah melihat kasus seperti ini.

person arma    schedule 09.07.2013
comment
Ya, ini kasus saya: Saya mendapat 3 kolom entri di DB. Jadi saya perlu mengulang seperti itu dari grup kotak centang - person Pathros; 22.09.2018

Sebuah array akan mencapai hal ini.

$check = array();

for($counter = 0; $counter <= 67; $counter++) {
    $check[] = "some value";
    var_dump($check[$counter]);
}
person Matt    schedule 31.07.2012