PDA

View Full Version : ساخت یک حلقه ساده



ARIARAD
چهارشنبه 07 خرداد 1393, 02:49 صبح
سلام دوستان
شاید سوالم خیلی پیش پا افتاده باشه ولی هر چی فکر کردم نتونست به جوابم برسم لطفا راهنمایم کنید
بنده یه سری دستور echo دارم به صورت زیر



<?php echo $album_track1_url_128?> <?php echo $album_track1_url_320?> <?php echo $album_track1_artist?> <?php echo $album_track1_lyrics?> <?php echo $album_track1_music?> <?php echo $album_track1_arrangment?> <?php echo $album_track1_text_lyrics?>


می خوام یک حلقه ایجاد کنم که اون عدد 1 بعد از track رو یکی یکی بشمره تا 20 مثلا
مشکلم اینجاست که مثلا می خوام همون موقع $album_track15_url_320 رو فراخوانی کنم

ممنون میشم راهنماییم کنید

Mori Bone
چهارشنبه 07 خرداد 1393, 08:57 صبح
باید از آرایه استفاده کنی. چون میشه توش پیمایش کرد. شما متغیر رو با نوع داده ای رشته ای اشتباه گرفته ای مثلا فکر می کنی به شکل زیر میشه این کار رو کرد ولی نمیشه:
for($i=1;$i<=20;$i++) {
echo $album_track . $i . url_320;
}

ARIARAD
پنج شنبه 08 خرداد 1393, 19:04 عصر
باید از آرایه استفاده کنی. چون میشه توش پیمایش کرد. شما متغیر رو با نوع داده ای رشته ای اشتباه گرفته ای مثلا فکر می کنی به شکل زیر میشه این کار رو کرد ولی نمیشه:
for($i=1;$i<=20;$i++) {
echo $album_track . $i . url_320;
}


ممنون بابت پاسختون
میشه یه مثال در مورد چیزی که میخوام با ارایه ها بزنید؟

Mori Bone
پنج شنبه 08 خرداد 1393, 20:01 عصر
$album_tracks_url_128 = array(1 => 'hello',2=> 'salam');
foreach($album_tracks_url_128 as $tracks ) {
echo $tracks;
}

ARIARAD
جمعه 09 خرداد 1393, 01:54 صبح
$album_tracks_url_128 = array(1 => 'hello',2=> 'salam');
foreach($album_tracks_url_128 as $tracks ) {
echo $tracks;
}

ممنون از توجهتون
ولی فکر کنم منظورمو درست متوجه نشدید
ببینید من 20 تا داده دارم که از دیتابیس دریافت می کنم و به متغیرایی نسبتشون میدم مثلا $track1 تا track20 حالا می خوام بدون این که همرو بنویسم یه حلقه ایجاد کنم که یکی یکی خودش عددو اضافه کنه و بشمره در عین حال بتونم با دستور echo نمایشش بدم

الان بنده تو کد زیر از ارایه برای ترکیب دو تا متغیر استفاده کردم ولی بازم جواب نمیده

اگه این کار با ارایه ها شدنیه لطفا یه مثال عملی در مورد چیزی که می خوام بزنید تا متوجه بشم
ممنون بابت کمکی که می کنید




<?php
$album_track1_url_128_1='u1';
$album_track1_url_128_2='u2';
$album_track1_url_128_3='u3';
$album_track1_url_128_4='u4';
$album_track1_url_128_5='u5';


$track = 1;


while ($track <= 5 ){


$test = array(1 => "$album_track1_url_128_" ,2=> "$track");
foreach($test as $tracks ) {
echo $tracks;
}
$track++;
}
?>

Tarragon
جمعه 09 خرداد 1393, 08:10 صبح
سلام
هرچند این کار شما استاندارد نیست و شما باید زمان خواندن در ارایه بریزید اما بهرحال :


for($i=1;$i<21;$i++)
{
$name = "album_track1_url_128_".$i;
echo $$name;
}

ARIARAD
جمعه 09 خرداد 1393, 17:37 عصر
سلام
هرچند این کار شما استاندارد نیست و شما باید زمان خواندن در ارایه بریزید اما بهرحال :


for($i=1;$i<21;$i++)
{
$name = $album_track1_url_128_$i;
echo $$name;
}


ممنون از پاسختون دوست من
ولی این
$album_track1_url_128_$i;
اصلا شدنی نیست. ارور میده
$album_track1_url_128_ . $i;
این هم شدنی نیست چون فقط شماره $i رو برمیگردونه و مقدار album_track1_url_128_ رو بر نمیگردونه

مهرداد سیف زاده
جمعه 09 خرداد 1393, 19:27 عصر
شما خروجی دقیق رو بنویسید تا دوستان راهنمایی کنن. مثلا کدی که من نوشتم رو اجرا کنید و ببینید خروجی مورد نظر هست یا نه



$traks = array('u1','u2','u3','u4','u5');
foreach ($traks as $key => $value) {
$k = $key+1; echo "album_track1_url_128_$k = $value<br/>";}

Tarragon
جمعه 09 خرداد 1393, 23:03 عصر
فکر کنم درست شد امتحان کنید.

ARIARAD
شنبه 10 خرداد 1393, 01:06 صبح
music_url_128
شما خروجی دقیق رو بنویسید تا دوستان راهنمایی کنن. مثلا کدی که من نوشتم رو اجرا کنید و ببینید خروجی مورد نظر هست یا نه



$traks = array('u1','u2','u3','u4','u5');
foreach ($traks as $key => $value) {
$k = $key+1; echo "album_track1_url_128_$k = $value<br/>";}


متاسفانه اینم جواب نداد
بذارید بیشتر توضیح بدم

ببینید دوستان بنده یه سری داده دارم تو دیتابیس که ای دیشون تو دیتابیس یکیه و با یک عدد که اخرشون گذاشتم فرق دارن یعنی به این شکل مثلا music_url_128_1 و music_url_128_2 حدود 70 تا هستش
حالا میخوام تو پست به جای این که بیام هر 70 تارو دونه دونه فرخوانی کنم از دیتابیس یه حلقه ایجاد کنم که بیاد اینارو فرخوانی کنه و به مساوی یه متغیر قرار بده

کد فرخوانی از دیتابیس به این شکله


$music_url_128_1 = ( !empty($music_details['music_url_128_1']) )? $music_details['music_url_128_1'] :"no" ;

اگه به کد دقت کنید میبینید که اخر متغیر و ای دی ها "1" وجود داره میخوام اون یکرو تا 70 مثلا بشمره و من در ادامه برنامه مثلا اگه $music_url_128_65 رو فراخوانی کردم مقداری که می خوام رو برگردونه برام
مشکل اینجاست که توی حلقه یا ارایه هایی که شما دادین php دو تا متغیر پشت همو نمیخونه

یعنی خروجی چیزی که شما دادید فقط کانتر اعداد هست به این شکل 1 = u12 = u23 = u34 = u45 = u5 چون $album_track1_url_128_ رو نادیده میگیره و فقط مقدار $k رو نمایش میده

فکر کنم دیگه متوجه منظورم شده باشید

ARIARAD
شنبه 10 خرداد 1393, 03:27 صبح
بالاخره بعد از کلی تلاش تونستم مشکلو حل کنم :-|
میگم شاید به درد کسی بخوره

باید دو تا متغیر پشت سر هم به این شکل نام گذاری شه تا ارور نده

$track_name{$nom_name_track}

Tarragon
شنبه 10 خرداد 1393, 13:37 عصر
سلام
کد من کار نکرد؟!

MMSHFE
شنبه 10 خرداد 1393, 16:50 عصر
اینو تست کنید. نباید مشکلی داشته باشه:

<?php
$vars = array(
'url_128',
'url_320',
'artist',
'lyrics',
'music',
'arrangment',
'text_lyrics',
);
for($i = 1; $i <= 20; $i++) {
foreach($vars as $var) {
$name = "album_track{$i}_{$var}";
echo '<p>' . $$name . '</p>' . PHP_EOL;
}
}
?>