الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التكرار في المصفوفه لا يساوي شيء ؟

بدأه MiNi.SpIdEr في 13 يوليو 2009 · 18 رد · 1,017 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

كيف يمكن اخراج نتيجه عدم تساوي من مصفوفه بداخل تكرار بدون تكرارها

اي اني اقوم بفحص مصفوفه بداخل تكرار وعند التساوي نفذ الاتي

لكن عند عدم التساوي اريد اظهار رسالة خطاء بدون تكرارها على عدد مرات التكرار هذا ما حدث معي عند المحاوله :lol:

حاولت استخدام الامر كونتينيو او اكزت لكني لم انجح

نجح في صفحه واحده وكان الشرط الذي بداخل المصفوفه هو فحص عدم المساواة

<>

وعند تساوي يظهر الرساله وتخرج بأكزت هذا واظح ولم اواجه مشاكل فيه

اسف اطلت اظن ان السؤال ابسط من كل هذا الكلام

:wub:

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#2

ربما لم افهم السؤال جيدا

ولكن اذا اردنا مقارنة شيئن يصعب المقارنة بينهما فالاسهل ان نقارن كل واحد على حده مع شيئ ثالث وسيط

#3

لا اظنك فهمته او اني لم استطع الاستفاده من ما قلته

المشكله ان المقارنه تجري داخل عمليه تكرار (دالة تكرار) يعني

سأحاول التوضيح بمثال بسيط وقريب على ما اريده

<?

for($i=0;$i<count($dir);$i++)
   {
	if($dir[$i] == $fnm)
   {
	echo 'will done';
}else{
	echo 'sorry';
	exit();
}
}

?>

لاحظ ان المتغير $dir هو مصفوفه اما المتغير $fnm فهو ثابت

في حالة تطابق النتيجه تظهر الرسالة

اما في حالة عدم تطابقها تظهر رسالة اخرى ويتوقف تطبيق الكود

ما يحدث الان او المشكله حسب تحليلي ان الكود بعد ان يفحص النتيجه الاولى وهيه غير مطابقه انتها كل شيء لانه سيخرج

اذا الغيت الخروج ووضعت رساله فقط فسوف تتكرر الرساله عدد مرات التكرار

كيف يمكن ترك else حتى انتهاء اخر متغير من المصفوفه ؟

حاولت استخدام شرط مع عدد المتغيرات في المصوفه ورقم دوره التكرار لكن لم انجح ولا اعرف السبب او الخطاء اين !

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#4

:)

عرف متغير وشوف قيمته بعد التكرار كالتالي :

<?

for($i=0;$i<count($dir);$i++)
{
	if($dir[$i] != $fnm)
	$a='sorry';
}
if($a){echo $a;}else{echo "Done!";}
?>

إذا كانت القيمة غير متساويه رح يصير للمتغير أ قيمة بس يخلص من اللوب رح نسأل في قيمة للمتغير إذا لآ بتكون الأمور تمام

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#5

في الولهه الاولى فرحت بالكود

بس ما اعرف ليه مو عارف ما عم تضبط !!!

ممكن ان يكون المثال

عند تساوي النتيجه اطبع okay لمره

وعد عدم التساوي اطبع done واخرج

ما يحص الان لدي

في اول دوره من التكرار يقوم بأعطاء قيمه للمتغير اذا انتها ؟؟؟؟ ام انا لم افهم ! اسف جربت ع عجله

بأنتظاركككم

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#6

وينكم يا مبرمجينا D:

اقتباس
عند تساوي النتيجه اطبع okay

وعد عدم التساوي اطبع done واخرج

داخل تكرار ؟

ان شاء الله مو مستحيله P:

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#7

شو زبطت معك وإلا بعدك معلق ؟؟؟؟ lol.gif

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#8

معلق :(

ممكن كود يعمل هل شي بس

داخل تكرار يتم التحقق لوجود اكثر من قيمه في مصفوفه
عند تساوي النتيجه اطبع okay
وعد عدم التساوي اطبع done واخرج

حتى لو بالطريقه تبعك

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#9

شو المطلوب بالضبط ؟؟؟

إذا كانت مصفوفه أفضل إستخدام فور إيش

foreach

أنت تريد أن تتحقق من وجود أكثر من قيمه في المصفوفه وهذا لا يحتاج إلى عمليه لوب فقط إسأل هل المصفوفة تحتوي على عدد قيم أكثر من صفر أو هل هذه مصفوفه مثل

if(is_array($dir)){ echo "yes"; }else{echo "no"; }

أو

if(count($dir)){ echo "yes"; }else{echo "no"; }

في المثال الذي قمت أنا بوضعه لم أتحقق منه والآن لاحظت أن به شيء غير منطقي وهو هذا السطر :

 if($dir[$i] != $fnm)

هنا تسأل إذا كانت القيمه لا تساوي المتغير وهذا من الطبيعي سيتحقق لآنك داخل حلقة وتتغير القيم كل دورة لذلك يجب أن يتم إستبدالها بإذا كانت مساويه إطبع كذا

 if($dir[$i] == $fnm)

من خلال هذا الكود تتأكد إذا كانت القيمة تساوت مع المتغير يطبع آسف ويمكنك معرفة عدد المرات التي تساوت فيها القيمه من خلال طباعة المتغير ألف وفي حال لم تتساوى يطبع تم

for($i=0;$i<count($dir);$i++)
{
	if($dir[$i] == $fnm) $a++;
}
if($a){echo "sorry!";}else{echo "Done!";}

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#10

حسنا اليك الي جنني ههههههههه

لدي مصفوفه تحوي على عدد متغير من الاسماء

ولدي متغير اسحبه من خلال GET

الان اريد ان افحص اذا ما كان هذا المتغير يساوي احد الاسماء داخل المصوفه فيتم اكمال تنفيذ البرنامج

اما اذا لم يكن موجود فيتم الخروج وعدم تنفيذ الكود exit();

هذا مثالك بعد قليل من التعديل اشتغل تمام

قمت بتغيير < بي <= لانها لم تكن تقارن القيمه الاخيره

<?

$dir = array(1 => "a", 2 => "z", 3 => "s", 4 => "Arabic", 5 => "Iraq");

$fnm=$_GET['mini'];

for($i=0;$i<=count($dir);$i++)
{
	if($dir[$i] == $fnm) $a++; //اذا تساوت اي قيمتان يكون للمتغير a قيمه
}
if($a){//فحص اذا ما كان للمتغير قيمه
}else{ //المتغير a بدون قيمه اطبع اخرج
exit('Sorry...your accec is wrong.');
}
?>

<b>Welcome, this is your page m8.</b>

كل شيء تمااام والحمد لله لكن لاحظ اني

if($a){
}

ممكن تقولي لو في مشكله بالكود او اي بوكز هههه (مصدق حالي) D:

هل هنالك امر او داله تعني الاكمال فقط انا اعرف الامر continue لكن اريد شيء يعمل في الكود العادي

سؤال اخر --> هل هنالك داله اذهب الى في البي اج بي :) go to ...

تم تعديل هذه المشاركة بواسطة MiNi.SpIdEr في 18 يوليو 2009 في 10:13

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#11
اقتباس
سؤال اخر --> هل هنالك داله اذهب الى في البي اج بي regular_smile.gif go to ...

للأسف لا مش مثل الفجوال بسيك :)

if($a){//فحص اذا ما كان للمتغير قيمه
}else{ //المتغير a بدون قيمه اطبع اخرج
exit('Sorry...your accec is wrong.');
}

هنا تقدر تختصرها كما يلي ...

if(!$a)
exit('Sorry...your accec is wrong.');

صعب أشوف إذا في ثغرات من هذا الكود بس إذا كنت تستدعي صفحة بالمتغير ميني فأكيد في ثغره :)

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#12

السلام عليكــم ورحمـة الله وبركاتــه ،،

اقتباس
الان اريد ان افحص اذا ما كان هذا المتغير يساوي احد الاسماء داخل المصوفه

بدلا من استخدام الـ for loop يمكن استخدام الدالة in_array

اقتباس
هل هنالك داله اذهب الى في البي اج بي :) go to

Goto

تم تعديل هذه المشاركة بواسطة mana80 في 18 يوليو 2009 في 11:58 — السبب: تعديل

I Say Nothing

#13

داله goto >>>> أول مرة أسمع فيها بالبي أتش بي :) بحثت عنها ولم أجدها كنت محتاجها كثير في البرمجه ... شكرا وبارك الله بك أخي mana

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#14

وصار عدنا goto مثل الفيجوال ههههههههه

شكرا ع الاختصار فاتتني ههههههه

المتغير مني بيجيب ملف بس بيدخل بمعارك حتى يجيبه يعني اقدر اني اقول اني متأكد من انها مستحيله :)

اما بخصوص داله in_array فهي لا تنفع بما اقوم به والسبب هو المعارك D: الي يدخل تدخل بها المتغيرات قبل وبعد .....

شكرا

شوف هذا الكود بصفحه داله goto

يحل المشكله من زمااان هههه

<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
	if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
?>

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#15
<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
	if($j==17) break 2;
  }  
}

if($j!=17) "i = $i";
else
echo 'j hit 17';
?>

goto تصعب فهم البرنامج برأيي

تم تعديل هذه المشاركة بواسطة Ryn في 18 يوليو 2009 في 23:47

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#16

ممم ممكن بس الكود في حالتي خاص الي وانا متعود عليه من الفيجوال D:

عموما ان الموضوع انحل بالكود

$dir = array(1 => "a", 2 => "z", 3 => "s", 4 => "Arabic", 5 => "Iraq");

$fnm=$_GET['mini'];

for($i=0;$i<=count($dir);$i++)
{
	if($dir[$i] == $fnm) $a++; //اذا تساوت اي قيمتان يكون للمتغير a قيمه
}
if(!$a){
exit('Sorry...your accec is wrong.');
}
?>

<b>Welcome, this is your page m8.</b>

شكرا لك ريان؟ انا كنت متوقع منك الحل ايضا :) بس اجه قبل ما تيجي ههه

شكرا جميعا

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

#17

اهم شي انه انحل :)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#18

جننتني goto :)

بعد ما إشتغلت عليها كل المحررات بتعطيني إنو هاي الجمله مش موجوده آخر شي لقيتها فقط في

اقتباس
Note: The goto operator is available as of PHP 5.3.

مشان هيك إللي حاب يستخدمها يتأكد إنو عندو آخر نسخة php :(

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#19

ههههههههههه

نفس الشي حصل معي D:

يله خيرها بغيرها

[moveleft]

MiN! SpId3r SqUaD

[/moveleft]

مواضيع مشابهة