سلام وقتتون بخیر.
یه کمکی برای یه کد میخواستم.
من یه خروجی دارم به این صورت:
Array ( [0] => IE 9 [1] => IE 10 [2] => IE 11 )
Array ( [0] => Bootstrap 2.3.x [1] => Bootstrap 2.2.2 [2] => Bootstrap 2.2.1 [3] => Bootstrap 2.2.0 )
که ممکن تعداد این آرایه ها کم یا زیاد بشه.حالا من میخوام مقدارهای هر آرایه رو جدا جدا بگیرم و نمایش بدم.
ممنون
خوب برای هر کدوم یه foreach بزنید و داخلش مقدار رو نمایش بدین. مشکل کجاست دقیقاً؟
مشکلم اینجاست که این یه خروجیه نه دو تا خروجی.هر بار ممکنه تعداد این آرایه ها متفاوت باشه.البته هر بار تعداد آرایه مشخص هست.باز هم این مشکل با foreach حل میشه؟
ممنون
بله میتونید. یعنی شما یه آرایه دارین که هر عنصرش باز خودش یه آرایه است؟
آره foreach کارش همینه. هر تعداد عناصر آرایه داشته باشید رو براتون مقادیرشو نشون میده.
foreach همه مقادیر و نشون میده ولی من میخوام مقدار آرایه اول و داخل یه فیلد دیتابیس ذخیره کنم آرایه دوم رو داخل یه فیلد دیگه و تا آخر به همین صورت
میتونی شرط بذاری.
foreach($arr as $key => $value){
if($key==0){
$dbField1= $value;
}
// بقیه شرطها و دستورات
}
(02-04-1394، 02:56 ب.ظ)abdollah110110 نوشته: [ -> ]میتونید براش شرط بذارین.
foreac($arr as $key => $value){
if($key==0){
$dbField1= $valye;
}
// بقیه شرطها و دستورات
}
این کد مربوط به یه فرم ساز هست.توی هر فرمی یه تعداد خاص از این آرایه ها هست.به همین خاطر نمیتونم دستی ۰ و ۱ و ... بگذارم.
خوب حتماً که نباید توی foreach نشون بدین. میتونید ذخیره کنید. اگه کدتون رو بگذارین بهتر میشه راهنمایی کرد. الان نگفتین این آرایه ها که گذاشتین، خودشون توی یه آرایه دیگه قرار دارن یا مستقل از همدیگه هستن؟
این یه بخش از کدم هست.آرایه ها مستقل هستن.
$count_checkbox = COUNT(checkbox);
$count_select2 = COUNT(select2);
while($element_row = $DB->Row($element_rs)){
if($element_row['element_type']=='checkbox'){
for($i=0;$i<$count_checkbox;$i++){
$field .= 'element_'.$element_row['element_id'].'_'.$i.',';
$value .= '"'.$_POST['element_'.$element_row['element_id'].'_'.$i].'",';
}
}
elseif($element_row['element_type']=='select2'){
$mul_val_string = serialize($_POST['element_'.$element_row['element_id']]);
$rr = unserialize($mul_val_string);
print_r($rr);//خروجی که گذاشتم از این خط بدست میاد
$value .= ?;
$field .= ?;
}
else{
$field .= 'element_'.$element_row['element_id'].',';
$value .= '"'.$_POST['element_'.$element_row['element_id']].'",';
}
}
$fields = rtrim($field,',');
$values = rtrim($value,',');
$id = $DB->Insert('forms_'.$form_id,$fields.',time',$values.','.time(),true);
خروجی print_r رو دقیقاً از توی View Source کپی کنید و اینجا بگذارین. یه چیزی این وسط کمه.
کد:
Array
(
[0] => IE 9
[1] => IE 10
[2] => IE 11
[3] => Mozilla
)
Array
(
[0] => Bootstrap 2.3.x
[1] => Bootstrap 2.2.2
[2] => Bootstrap 2.2.1
[3] => Bootstrap 2.2.0
)
این دستور رو قبل از switch بگذارین ببینیم چی چاپ میشه:
print_r($element_row);
دنبال یه راهی هستم که بشه آرایه اول از دوم رو تشخیص داد. الان دوتا آرایه معمولی هستن و نمیشه بگیم اگه اولی بود فلان کار بکن اگه دومی بود فلان کار دیگه. هرکدوم از این آرایه ها توی یکی از دورهای while تولید میشن.
ممنون از اینکه وقت گذاشتید.
کد:
Array
(
[0] => 1
[id] => 1
[1] => 1
[form_id] => 1
[2] => 0
[element_id] => 0
[3] => مرورگرهای سازگار
[element_title] => مرورگرهای سازگار
[4] => select2
[element_type] => select2
[5] => 0
[element_size] => 0
[6] => 0
[required] => 0
[7] => 1429080648
[time] => 1429080648
)
Array
(
[0] => 2
[id] => 2
[1] => 1
[form_id] => 1
[2] => 1
[element_id] => 1
[3] => فریمورک سازگار
[element_title] => فریمورک سازگار
[4] => select2
[element_type] => select2
[5] => 0
[element_size] => 0
[6] => 0
[required] => 0
[7] => 1429080648
[time] => 1429080648
)
خوب الان شما باید جایی که print_r گذاشتین، یه switch یا if براساس element_title بگذارین (ضمناً از fetch_assoc بجای fetch_array استفاده کنید تا حافظه دوبرابر مصرف نشه).
اگه اندیس element_title از element_row$ مرورگرهای سازگار بود، بریزین توی جدول اول و اگه نبود توی جدول دوم ذخیره کنید.