PDA

View Full Version : سوال: مشکل با آرایه



Louai_M
پنج شنبه 14 خرداد 1394, 13:32 عصر
سلام من دو مقدار طول و عرض دارم که از کاربر می گیرم بعد با مقادیر و طول و عرض ذخیره شده در یک آرایه چک می کنم می خوام مقادیر داده شده از کاربر را تشخیص بدم تو کدوم لت هستش



<?php
$latlayer = array(
array('minW' => 0 , 'minH' => 0 , 'maxW' => 8.5 , 'maxH' => 4.8 , 'val' => 'lat1' ),
array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>17,'maxH'=>9.6,'val'=>'lat2'),
array('minW'=> 8.5 , 'minH' => 4.8,'maxW'=>25.5,'maxH'=>14.4,'val'=>'lat3'),
array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>34,'maxH'=>19.2,'val'=>'lat4'),
array('minW' => 8.5 , 'minH' =>4.8,'maxW'=>42.5,'maxH'=>24,'val'=>'lat5'),
array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>51,'maxH'=>28.8,'val'=>'lat6'),
array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>59.5,'maxH'=>33.6,'val'=>'lat7'),
array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>68,'maxH'=>34.8,'val'=>'lat8')
);

$w = 9;
$h = 6;
foreach($latlayer as $current)
{
if( $current['minW'] >= $w and $current['maxW'] <= $w )
{
echo $current['val'];
break;
}
}

?>


من کد های بالا را نوشتم ولی هیچ جوابی دریافت نمی کنم کسی می تونه راهنماییم کنه

نیاز فوری دارم (ضمناً منظورم از لت آرایه با نام لت هست می خوام مقدارش بهم بده)

Louai_M
پنج شنبه 14 خرداد 1394, 13:35 عصر
در اصل کل ماجرا به این شکله

که کاربر فایل (تصویر) را آپلود می کنه بعد سیستم قبل از انجام عمل آپلود چک می کنه که عرض و طول تصویر با عرض و طول استاندارد یکی هست یا خیر در صورتی که یکی نیست طبق دسته بندی لت های که تو آرایه تعریف کردم قیمت را چند برابر می کند حال من مشکلم توهین تشخیص اینکه عرض و طول دریافتی داخل کدوم لت میشه (خیلی نیاز فوری دارم)
مثلاً


$current['val] = lat1
$price * 1

$current['val] = lat2
$price * 2

$current['val] = lat3
$price * 3


....

H:Shojaei
پنج شنبه 14 خرداد 1394, 13:41 عصر
خوب شرطی که گذاشتید اشتباهه! یا مقادیری که تو آرایه دارید...
الان شما گفتید minw کوچکتر از 9 باشه خوب همچین مقداری که وجود نداره تو کل آرایه!؟؟؟؟!؟

Louai_M
پنج شنبه 14 خرداد 1394, 13:51 عصر
دوست عزیز من چطور می تونم بهش بگم که طول و عرض دریافتی بین کدوم یک از مختصات موجو تو آرایه هستش

عرض بین کدوم minW و maxW

طول بین کدوم minh و maxH

H:Shojaei
پنج شنبه 14 خرداد 1394, 14:14 عصر
خوب باید minw رو هم به همون شکل که maxw رو اضافه میکنید تو آرایه اون رو هم اضافه کنید بعد اینطوری کد شما درست عمل میکنه...


$latlayer = array( array('minW' => 0 , 'minH' => 0 , 'maxW' => 8.5 , 'maxH' => 4.8 , 'val' => 'lat1' ), array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>17,'maxH'=>9.6,'val'=>'lat2'), array('minW'=> 17 , 'minH' => 4.8,'maxW'=>25.5,'maxH'=>14.4,'val'=>'lat3'), array('minW' => 25.5 , 'minH' => 4.8,'maxW'=>34,'maxH'=>19.2,'val'=>'lat4'), array('minW' => 34 , 'minH' =>4.8,'maxW'=>42.5,'maxH'=>24,'val'=>'lat5'), array('minW' => 42.5 , 'minH' => 4.8,'maxW'=>51,'maxH'=>28.8,'val'=>'lat6'), array('minW' => 51 , 'minH' => 4.8,'maxW'=>59.5,'maxH'=>33.6,'val'=>'lat7'),

Louai_M
پنج شنبه 14 خرداد 1394, 14:29 عصر
الان درست شد فقط مشکل اینجاست خوب طول را چطور حساب کنم


$w = 20;
$h = 6;
foreach($latlayer as $current)
{
if( ($w >= $current['minW'] and $w <= $current['maxW']'))
{
echo $current['val'];
break;
}
}

جواب
lat3

درسته

** فقط مشکل اینجاست که باید عرض و طول را باهم چک کنه

H:Shojaei
پنج شنبه 14 خرداد 1394, 14:46 عصر
$latlayer = array( array('minW' => 0 , 'minH' => 0 , 'maxW' => 8.5 , 'maxH' => 4.8 , 'val' => 'lat1' ), array('minW' => 8.5 , 'minH' => 4.8,'maxW'=>17,'maxH'=>9.6,'val'=>'lat2'), array('minW'=> 17 , 'minH' => 4.8,'maxW'=>25.5,'maxH'=>14.4,'val'=>'lat3'), array('minW' => 25.5 , 'minH' => 4.8,'maxW'=>34,'maxH'=>19.2,'val'=>'lat4'), array('minW' => 34 , 'minH' =>4.8,'maxW'=>42.5,'maxH'=>24,'val'=>'lat5'), array('minW' => 42.5 , 'minH' => 4.8,'maxW'=>51,'maxH'=>28.8,'val'=>'lat6'), array('minW' => 51 , 'minH' => 4.8,'maxW'=>59.5,'maxH'=>33.6,'val'=>'lat7'), ); $w=8;
foreach($latlayer as $current) { if( $current['minW'] <= $w and $current['maxW'] >= $w ) { echo $current['val']."aaaaaaaaaaaaaa";
break;
}
}

Louai_M
پنج شنبه 14 خرداد 1394, 15:08 عصر
دوست عزیز برای چک کردن هردو باهم چکار کنم

یعنی می خوام طول و عرض را چک کنه و بگه تو کدوم لته

H:Shojaei
پنج شنبه 14 خرداد 1394, 15:11 عصر
خوب بستگی به الگوریتمی که میخواد کار کنید داره اول طول رو چک کنید هرکدوم بود مقدار همون lat رو بردارین باز واسه عرض چک کنید و lat اون رو هم بردارید به همون شکلی که اون یکی رو برداشتید...
هردورو دارید هرکاری خواستید میتونید با اینا انجام بدین حالا...

Louai_M
پنج شنبه 14 خرداد 1394, 15:19 عصر
درسته ممنون البته فایلهای دریافتی بعضی هاشون طول و عرض باهم تغییر می کنه در بیشتر اونها فقط طول و یا فقط عرض تغییر می کنه

پس به همون روش طول را چک کنم

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

Louai_M
پنج شنبه 14 خرداد 1394, 15:23 عصر
میشه یه شرط گذاشت و گفت که اگه عرض از استاندارد بزرگتره پس برای عرض لت را چک کن و اگه طول بیش از استاندارده لت طول را محاسبه کن


فقط یه مشکل اگه هردو باشن دوباره چنین مشکلی پیدا میکنیم

فایل پیوست مقادیر اصلی لت ها هستش
131938

H:Shojaei
پنج شنبه 14 خرداد 1394, 15:51 عصر
دوست عزیز اینایی که تو عکسه یکم مهارت کد نیسی میخواد اونم یکم که بدونید چه شرطهایی با چه ترتیبی بنویسید روشش رو بلدین چون با یکیش نوشتید باقیشو یکم فکر پشتش بذارید میتونید به راحتی پیاده سازی کنید...