بيت / وحدات تحكم اللعبة / Min - يبحث عن أصغر قيمة. Min - يبحث عن أصغر قيمة الحد الأدنى للقيمة في مصفوفة php

Min - يبحث عن أصغر قيمة. Min - يبحث عن أصغر قيمة الحد الأدنى للقيمة في مصفوفة php

المصفوفات هي إحدى الطرق المنظمة الملائمة لتخزين المعلومات. كل عنصر في مثل هذه المصفوفة له مكانه الخاص ومفتاحه وقيمته الخاصة. يمكن أن تكون محتويات المصفوفات مختلفة، على سبيل المثال، قاعدة بيانات مكونة من أرقام أو أسماء أو قيم رقمية بسيطة. عند الحديث عن الأرقام، قد نواجه أنواعًا مختلفة من المهام، على سبيل المثال، استنتاج الحد الأقصى أو الأدنى للقيمة. سنتحدث اليوم عن كيفية حل هذه المشكلة بلغات البرمجة المختلفة.

العثور على أكبر وأصغر قيمة لمصفوفة أحادية البعد في PHP

جميع المصفوفات تختلف في بنيتها. خذ بعين الاعتبار مصفوفتين بسيطتين أحاديتي البعد، إحداهما لا تحتوي على مفاتيح:

$my_array = array(22, 24, 37, 74, 23, 2, 10);

وواحدة مماثلة للسابقة، ولكن مع المفاتيح:

$my_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

دعونا نحاول عرض الحد الأقصى والحد الأدنى لقيم هذه المصفوفة. للقيام بذلك سوف نستخدم الوظائف القياسية " الأعلى" و " دقيقة" على التوالى:

صدى ماكس($my_array); // طباعة 74 صدى دقيقة($my_array); // طباعة 2

إذا ألقينا نظرة فاحصة على المصفوفة الثانية، فبالنتيجة يمكننا الحصول على مفتاح القيم القصوى أو الدنيا.

باستخدام مصفوفة كمثال

$my_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

سوف تبدو مثل هذا:

$max = array_keys($my_array, max($my_array)); $max = $max;// مفتاح القيمة القصوى $min = array_keys($my_array, min($my_array)); $ دقيقة = $ دقيقة؛ // مفتاح القيمة الدنيا echo $max; // اطبع نتيجة القيمة القصوى

وبناء على ذلك، فإن مفتاح القيمة القصوى هو "4"، والحد الأدنى للقيمة هو "6".

العثور على أكبر وأصغر قيمة لمصفوفة متعددة الأبعاد في PHP

تتميز المصفوفات متعددة الأبعاد بتداخلها. على سبيل المثال، ستبدو المصفوفة ثنائية الأبعاد هكذا بدون المفاتيح:

$my_array = array(array(22, 24, 37), array(74, 23, 2), array(10));

وعليه بمفاتيح معينة:

$my_array = array(array(1 => 22, 2 => 24, 3 => 37), array(4 => 74, 5 => 23, 6 => 2), array(7 => 10));

في هذه الحالة، يعد العثور على القيم القصوى والدنيا أمرًا صعبًا بعض الشيء، ولكنه ممكن أيضًا.

أولاً، من أجل العثور على الحد الأقصى والحد الأدنى هنا، نقوم بتحويل المصفوفة إلى مصفوفة أحادية البعد:

$out_array = array(); foreach($my_array كـ $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

التصميم يعمل لكلا الخيارين أعلاه. وبعد ذلك، باتباع مثال المصفوفة أحادية البعد، سنعرض البيانات التي نحتاجها:

صدى ماكس($out_array); // طباعة 74 صدى دقيقة($out_array); // طباعة 2

كمكافأة صغيرة، سأقدم مثالاً على مصفوفة شعبية أخرى ثنائية الأبعاد:

$my_array = array(array("id" => "1"، "date" => "2018-03-19"، "price" => "5"،)، array ("id" => "2" ، "التاريخ" => "19-03-2018"، "السعر" => "50"،)، المصفوفة ("المعرف" => "3"، "التاريخ" => "19-03-2018"، " السعر" => "25"،))؛

ولا أقصد بالشعبية المحتوى، بل مثال على بنيته. لنفترض أنك تحتاج هنا إلى إخراج القيم القصوى والدنيا لمفاتيح "السعر" فقط.

أول شيء تحتاجه في هذه الحالة هو الحصول عليه مجموعة جديدةفقط بهذه البيانات:

$numbers = array_column($my_array, "price");

صدى دقيقة(أرقام $); // طباعة 5 echo max($numbers); // طباعة 50

هذا يكمل العمل مع المصفوفات في PHP. إذا اختلفت بنية الصفيف لديك فجأة ولا تعرف كيفية معالجتها، فاطرح السؤال المناسب في التعليقات، وسأحاول مساعدتك.

العثور على أكبر وأصغر قيمة لمصفوفة أحادية البعد في JavaScript

على عكس PHP، فإن نوع المصفوفات في JavaScript أبسط بكثير، وستبدو المصفوفة البسيطة أحادية البعد كما يلي:

فار my_array = ;

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

دالة arrayMax(array) ( إرجاع array.reduce(function(a, b) ( return Math.max(a, b); )); ) دالة arrayMin(array) ( إرجاع array.reduce(function(a, b) ( إرجاع Math.min(a, b));

والتي تستخدم للعثور على القيم التي نحتاجها. الاستخدام بسيط أيضًا:

تنبيه(arrayMax(my_array)); // طباعة 74 تنبيه(arrayMin(my_array)); // طباعة 2

في هذه الحالة، سيتم عرض الرقمين “2” و “74” على الشاشة كالحد الأدنى والحد الأقصى لقيم المصفوفة.

العثور على أكبر وأصغر قيمة لمصفوفة متعددة الأبعاد في JavaScript

المصفوفات متعددة الأبعاد في JavaScript بسيطة تمامًا، وهي تبدو كما يلي:

var my_array = [ , , ];

دعونا نحاول العثور على الحد الأقصى والحد الأدنى هنا. في البداية، سنكتب دالة، وفقًا للمخطط الذي نعرفه بالفعل، سوف نمثل هذه المصفوفة على أنها أحادية البعد:

فار out_array = ; my_array.forEach(function(v) ( Array.prototype.push.apply(out_array, v); ));

واستخدام الكائن " الرياضيات"نحصل على القيم التي نحتاجها:

var min = Math.min.apply(null, out_array); // احصل على 2 var max = Math.max.apply(null, out_array); // احصل على 74 تنبيهًا (كحد أقصى)؛ // طباعة 74 على الشاشة

في الواقع، بدلا من الكائن " الرياضيات"يمكنك استخدام وظائفنا المستخدمة في الإصدار مع مصفوفة أحادية البعد، ولكن لكي تفهم أنه يمكن حل أي مشكلة بعدة طرق - فقد قدمت هنا حلاً مختلفًا قليلاً.

حسنا، وفقا للتقاليد – مكافأة صغيرة. لنفكر في مصفوفة أخرى متعددة الأبعاد بالبنية التالية:

var my_array = [["One"، "2018-03-19"، 5]، ["Two"، "2018-03-19"، 50]، ["ثلاثة"، "2018-03-19"، 25 ]، ]؛

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

فار مين = +إنفينيتي؛ var max = -Infinity; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // البحث عن القيمة القصوى ) )); تنبيه(دقيقة+""+ماكس); // عرض النتيجة على الشاشة

هذا كل شيء. لا تنسوا دعم المشروع. هناك الكثير من الأشياء المثيرة للاهتمام في انتظارك في المستقبل!

الحصول على المفتاح (9)

لدي هذه المصفوفة:

صفيف (0 => صفيف ("المعرف" => "20110209172713"، "التاريخ" => "09-02-2011"، "الوزن" => "200")، 1 => صفيف ("المعرف" =>) "20110209172747"، "التاريخ" => "09-02-2011"، "الوزن" => "180"،)، 2 => مصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "2011-" 02-09"، "الوزن" => "175"، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11/02/2011"، "الوزن" => "195" "،)،)

أحتاج إلى استخراج الحد الأدنى والحد الأقصى لقيم الوزن. في هذا المثال

الحد الأدنى للقيمة $ = 175

$max_value = 200

أي مساعدة حول كيفية القيام بذلك؟ شكرًا لك!

الإجابات

بالنسبة للأشخاص الذين يستخدمون PHP 5.5+، يمكن القيام بذلك بسهولة أكبر باستخدام array_column . لا حاجة لتلك المصفوفات القبيحة.

كيفية الحصول على القيمة القصوى:

$highest_weight = max(array_column($details, "Weight"));

كيفية الحصول على الحد الأدنى من القيمة

$lowest_weight = min(array_column($details, "Weight"));

الخيار 1: تقوم أولاً بجمع المصفوفة للحصول على هذه الأرقام (وليس المعلومات الكاملة):

$numbers = array_column($array، "الوزن")

ثم تحصل على الحد الأدنى والحد الأقصى:

$min = min($numbers); $max = max($numbers);

الخيار 2. (فقط إذا لم يكن لديك PHP 5.5.) نفس الخيار 1، ولكن لانتزاع القيم، استخدم array_map:

$numbers = array_map(function($details) ( return $details["Weight"]; ), $array);

الخيار 3.

الخيار 4: إذا كنت تحتاج فقط إلى الحد الأدنى أو الحد الأقصى، فقد يكون array_reduce() أسرع:

$min = array_reduce($array, function($min, $details) ( return min($min, $details["weight"]); ), PHP_INT_MAX);

هذا يفعل أكثر من min() s، لكنه سريع جدًا. يجب أن يبدأ PHP_INT_MAX بالحد الأقصى ثم ينخفض ​​أكثر فأكثر. يمكنك أن تفعل الشيء نفسه بالنسبة لـ $max ، لكنك ستبدأ بـ 0 أو -PHP_INT_MAX .

مصفوفة ("المعرف" => "20110209172713"، "التاريخ" => "09-02-2011"، "الوزن" => "200"،)، 1 => مصفوفة ("المعرف" => "20110209172747"، " التاريخ" => "09-02-2011"، "الوزن" => "180"، 2 => المصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "09-02-2011"، "الوزن" => "175"،)، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11-02-2011"، "الوزن" => "195"،)،) ; foreach ($صفيف كـ $key => $value) ( ​​​​$result[$key] = $value["Weight"]; ) $min = min($result); $ماكس = ماكس($نتيجة); echo "المصفوفة في الحد الأدنى للرقم:".$min."
"; echo " المصفوفة في العدد الأقصى: ".$max."
"; ?>

Foreach ($array as $k => $v) ( $tArray[$k] = $v["Weight"]; ) $min_value = min($tArray); $max_value = max($tArray);

قم بطباعة خمسة أرقام كحد أقصى وأدنى بسرعة من مصفوفة دون استخدام مصفوفة الفرز في PHP: -

قائمة أعلى سبع درجات حرارة:-"; $m= max($array); for($i=1; $i<7 ; $i++) { $m[$i]=max(array_diff($array,$m)); } foreach ($m as $key =>قيمة $) ( صدى " ".$value; ) صدى "
قائمة أدنى سبع درجات حرارة: "; $mi= min($array); for($i=1; $i<7 ; $i++) { $mi[$i]=min(array_diff($array,$mi)); } foreach ($mi as $key =>$value) ( ​​​​echo " ".$value; ) ?>

ماذا عن عدم استخدام وظيفة محددة مسبقًا مثل min أو max ؟

$ آر = ; $val = $arr; $n = العد($arr); ل($i=1;$i<$n;$i++) { if($val<$arr[$i]) { $val = $val; } else { $val = $arr[$i]; } } print($val);

من المثير للاهتمام ملاحظة أن كلا الحلين المذكورين أعلاه يستخدمان مساحة تخزين إضافية على شكل مصفوفات (الأول منهما والثاني مصفوفة واحدة) ثم تجد الحد الأدنى والحد الأقصى باستخدام مصفوفة "التخزين الإضافي". في حين أن هذا قد يكون مقبولاً في عالم البرمجة الحقيقي (من الذي يعطيك نقطتين حول التخزين "الإضافي"؟)، إلا أنه سيمنحك درجة "C" في البرمجة 101.

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

$first = intval($input["Weight"]); $دقيقة = $first؛ $max = $first؛ foreach($input as $data) ( $weight = intval($data["Weight"]); if($weight<= $min) { $min = $weight ; } if($weight >$max) ( $max = $weight ; ) ) echo " min = $min and max = $max \n " ;

$num = array (0 => array ("id" => "20110209172713"، "Date" => "2011-02-09"، "الوزن" => "200")، 1 => صفيف ("id" => "20110209172747"، "التاريخ" => "09-02-2011"، "الوزن" => "180"، 2 => مصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "2011 - 02-09"، "الوزن" => "175")، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11/02/2011"، "الوزن" => "195 " ));

foreach($num as $key => $val) ( $weight = $val["Weight"]; ) echo max($weight); صدى دقيقة($الوزن); .

وهنا بعض الطرق إزالة العنصر من المصفوفة باستخدام JavaScriptجميع الطرق الموصوفة

لا تغير المصفوفة الأصلية

وبدلاً من ذلك قم بإنشاء واحدة جديدة.

إذا كنت تعرف مؤشر العنصر

لنفترض أن لديك مصفوفة وتريد إزالة العنصر الموجود في الموضع i .

إحدى الطرق هي استخدام الشريحة () :

عناصر const = ["a"، "b"، "c"، "d"، "e"، "f"] const i = 3 const filteredItems = items.slice(0, i-1).concat(items. شريحة (i، items.length)) console.log(filteredItems)

تنشئ شريحة () مصفوفة جديدة بالمؤشرات التي تتلقاها. نحن ببساطة نقوم بإنشاء مصفوفة جديدة - من البداية إلى الفهرس الذي نريد حذفه، ونقوم بربط مصفوفة أخرى من الموضع الأول بعد المصفوفة التي قمنا بحذفها إلى نهاية المصفوفة. إذا كنت تعرف المعنىفي هذه الحالة، أحد الخيارات الجيدة هو استخدام filter() الذي يقدم المزيد

تصريحي

يقترب:

عناصر const = ["a"، "b"، "c"، "d"، "e"، "f"] const valueToRemove = "c" const filteredItems = items.filter(item => item!== valueToRemove) console.log(filteredItems)

يستخدم هذا وظائف السهم ES6. يمكنك استخدام الوظائف التقليدية لدعم المتصفحات القديمة:

عناصر const = ["a"، "b"، "c"، "d"، "e"، "f"] const valueToRemove = "c" const filteredItems = items.filter(function(item) (return item!= = valueToRemove )) console.log(filteredItems)

أو يمكنك استخدام Babel وتحويل كود ES6 مرة أخرى إلى ES5 لجعله أكثر قابلية للقراءة للمتصفحات القديمة، ولكن اكتب JavaScript حديث في الكود الخاص بك.

إزالة عناصر متعددة

ماذا لو كنت تريد حذف العديد من العناصر بدلاً من عنصر واحد؟

دعونا نجد الحل الأبسط.

عناصر const = ["a"، "b"، "c"، "d"، "e"، "f"] const RemoveItem = (items, i) => items.slice(0, i-1).concat (items.slice(i, items.length)) Let filteredItems = RemoveItem(items, 3) filteredItems = RemoveItem(filteredItems, 5) //["a"، "b"، "c"، "d"] console. سجل (العناصر التي تمت تصفيتها)

حسب القيمة

يمكنك البحث عن التضمين داخل وظيفة رد الاتصال:

عناصر const = ["a"، "b"، "c"، "d"، "e"، "f"] const valueToRemove = ["c"، "d"] const filteredItems = items.filter(item => !valuesToRemove.includes(item)) // ["a"، "b"، "e"، "f"] console.log(filteredItems)

تجنب تحور المصفوفة الأصلية

تعمل الدالة splice() (يجب عدم الخلط بينها وبين Slice()) على تغيير المصفوفة الأصلية ويجب تجنبها.


لدي هذه المصفوفة:

صفيف (0 => صفيف ("المعرف" => "20110209172713"، "التاريخ" => "09-02-2011"، "الوزن" => "200")، 1 => صفيف ("المعرف" =>) "20110209172747"، "التاريخ" => "09-02-2011"، "الوزن" => "180"،)، 2 => مصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "2011-" 02-09"، "الوزن" => "175"، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11/02/2011"، "الوزن" => "195" "،)،)

أحتاج إلى استخراج الحد الأدنى والحد الأقصى لقيم الوزن. في هذا المثال

الحد الأدنى للقيمة $ = 175

$max_value = 200

أي مساعدة حول كيفية القيام بذلك؟ شكرًا لك!


2018-05-01 03:06

الإجابات:

الخيار 1: تقوم أولاً بجمع المصفوفة للحصول على هذه الأرقام (وليس المعلومات الكاملة):

$numbers = array_column($array، "الوزن")

ثم تحصل على الحد الأدنى والحد الأقصى:

$min = min($numbers); $max = max($numbers);

الخيار 2. (فقط إذا لم يكن لديك PHP 5.5.) نفس الخيار 1، ولكن لانتزاع القيم، استخدم array_map:

$numbers = array_map(function($details) ( return $details["Weight"]; ), $array);

الخيار 3.

الخيار 4: إذا كنت بحاجة إلى min max، فقد يكون array_reduce() أسرع:

$min = array_reduce($array, function($min, $details) ( return min($min, $details["weight"]); ), PHP_INT_MAX);

هذا يفعل أكثر من min() s، لكنه سريع جدًا. يجب أن يبدأ PHP_INT_MAX بالحد الأقصى ثم ينخفض ​​أكثر فأكثر. يمكنك أن تفعل الشيء نفسه بالنسبة إلى $max ، لكنك ستبدأ بـ 0 أو -PHP_INT_MAX .


2018-05-01 03:11

Foreach ($array as $k => $v) ( $tArray[$k] = $v["Weight"]; ) $min_value = min($tArray); $max_value = max($tArray);


2018-05-01 03:09

بالنسبة للأشخاص الذين يستخدمون PHP 5.5+، يمكن القيام بذلك بسهولة أكبر باستخدام array_column لا حاجة لتلك المصفوفات القبيحة.

كيفية الحصول على القيمة القصوى:

$highest_weight = max(array_column($details, "Weight"));

كيفية الحصول على الحد الأدنى من القيمة

$lowest_weight = min(array_column($details, "Weight"));


2018-01-24 11:04

من المثير للاهتمام ملاحظة أن كلا الحلين المذكورين أعلاه يستخدمان مساحة تخزين إضافية على شكل مصفوفات (الأول منهما والثاني مصفوفة واحدة) ثم تجد الحد الأدنى والحد الأقصى باستخدام مصفوفة "التخزين الإضافي". في حين أن هذا قد يكون مقبولاً في عالم البرمجة الحقيقي (من الذي يعطيك نقطتين حول التخزين "الإضافي"؟)، إلا أنه سيمنحك درجة "C" في البرمجة 101.

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

$first = intval($input["Weight"]); $دقيقة = $first؛ $max = $first؛ foreach($input as $data) ( $weight = intval($data["Weight"]); if($weight<= $min) { $min = $weight ; } if($weight >$max) ( $max = $weight ; ) ) echo " min = $min and max = $max \n " ;


2018-05-01 06:08

$num = array (0 => array ("id" => "20110209172713"، "Date" => "2011-02-09"، "الوزن" => "200")، 1 => صفيف ("id" => "20110209172747"، "التاريخ" => "09-02-2011"، "الوزن" => "180"، 2 => مصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "2011 - 02-09"، "الوزن" => "175")، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11/02/2011"، "الوزن" => "195 " ));


2018-01-10 06:44

مصفوفة ("المعرف" => "20110209172713"، "التاريخ" => "09-02-2011"، "الوزن" => "200"،)، 1 => مصفوفة ("المعرف" => "20110209172747"، " التاريخ" => "09-02-2011"، "الوزن" => "180"، 2 => المصفوفة ("المعرف" => "20110209172827"، "التاريخ" => "09-02-2011"، "الوزن" => "175"،)، 3 => المصفوفة ("المعرف" => "20110211204433"، "التاريخ" => "11-02-2011"، "الوزن" => "195"،)،) ; foreach ($صفيف كـ $key => $value) ( ​​​​$result[$key] = $value["Weight"]; ) $min = min($result); $ماكس = ماكس($نتيجة); echo "المصفوفة في الحد الأدنى للرقم:".$min."
"; echo " المصفوفة في العدد الأقصى: ".$max."
"; ?>


2017-11-11 19:33

$Location_Category_array = المصفوفة (5,50,7,6,1,7,7,30,50,50,50,40,50,9,9,11,2,2,2,2,2,11,21 ،21،1،12،1،5)؛ asort($Location_Category_array); $count=array_count_values($Location_Category_array);// يحسب القيم في المصفوفة ويعيد المصفوفة المرتبطة print_r($count);
$maxsize = 0;
$القيمة القصوى = 0;

foreach($عد كـ $a=>$y)(صدى "

".$a."=".$y; if($y>=$maxvalue)( $maxvalue = $y; if($a>$maxsize)( $maxsize = $a; ) ) ) echo " الحد الأقصى = ".$maxsize;

(بي إتش بي 4، بي إتش بي 5، بي إتش بي 7)

دقيقة — يجد أصغر قيمةوصف يجد أصغر قيمةإذا تم تمرير وسيطة واحدة فقط - مجموعة من الأرقام،

تعليق:

تتم مقارنة قيم الأنواع المختلفة باستخدام قواعد المقارنة القياسية. على سبيل المثال، سلسلة غير رقمية ( خيط) سيتم مقارنتها بعدد صحيح ( عدد صحيح) كما لو كانت متساوية 0 ولكن عدة أسطر ( خيط) سيتم مقارنتها أبجديًا. ستحتفظ القيمة المرجعة بالنوع الأصلي للمتغير، دون تحويل.

إرجاع القيم

وظيفة يجد أصغر قيمةتُرجع قيمة المعلمة التي تعتبر "الأصغر" وفقًا لقواعد المقارنة القياسية. إذا كانت القيم متعددة أنواع مختلفةمتساوون مع بعضهم البعض (أي 0 و "اي بي سي")، ثم سيتم إرجاع الأول.

أمثلة

المثال رقم 1 مثال الاستخدام يجد أصغر قيمة

صدى دقيقة (2، 3، 1، 6، 7)؛ // 1
صدى دقيقة (array(2 , 4 , 5 )); // 2

// يتم التعامل مع السلسلة "hello" عند مقارنتها بـ int على أنها 0
// بما أن كلا القيمتين متساويتين، فإن ترتيب المعلمات يحدد النتيجة
صدى دقيقة(0, "مرحبا"); // 0
صدى مين ("مرحبا" , 0); // مرحبًا

// هنا نقارن -1< 0, поэтому -1 является наименьшим значением
صدى مين ("مرحبا" , - 1 ); // -1

// عند مقارنة مصفوفات ذات أطوال مختلفة، سيُرجع min المصفوفة الأقصر
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // المصفوفة (2، 2، 2)

// تتم مقارنة صفائف متعددة بنفس الطول من اليسار إلى اليمين
// في هذا المثال: 2 == 2، لكن 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // المصفوفة (2، 4، 8)

// إذا تمت مقارنة مصفوفة وغير مصفوفة، فلن يتم إرجاع المصفوفة أبدًا
// بما أن المصفوفات تعتبر أكبر من جميع القيم الأخرى
$val = min ("string" , array(2 , 5 , 7 ), 42); //خيط

// إذا كانت إحدى الوسيطات فارغة أو منطقية، فستتم مقارنتها بالوسيطات الأخرى
// باستخدام القاعدة FALSE< TRUE, учитывая остальные типы аргументов
// في المثال المذكور، يتم التعامل مع -10 و10 على أنهما TRUE
$val = دقيقة (- 10 , FALSE , 10); // خطأ شنيع
$val = min (- 10 , NULL , 10 ); // باطل

// من ناحية أخرى، يتم التعامل مع 0 على أنه FALSE، لذا فهو "أقل" من TRUE
$val = min(0, TRUE); // 0
?>

لدي مصفوفة بهذا التنسيق:

المصفوفة ( => المصفوفة ( => 117 => الشبكات => 16) => المصفوفة ( => 188 => FTP => 23) => المصفوفة ( => 189 => الإنترنت => 48))

هل هناك طريقة جيدةالحصول على الحد الأدنى والحد الأقصى لقيم "العد"؟ يمكنني القيام بذلك باستخدام حلقات متعددة، لكنني اعتقدت أنه قد تكون هناك طريقة أفضل.

على عكس الوظائف الأخرى، لا يمكنك استخدام الدالتين min() / max() لهذه المشكلة، نظرًا لأن هذه الوظائف لا تفهم صفائف البيانات (المصفوفة) التي تم تمريرها إليها. تعمل هذه الوظائف فقط مع عناصر المصفوفة العددية.

ابدأ الصورة

يبدو أن السبب وراء استخدام min() و max() يعطي الإجابة الصحيحة هو أن المصفوفات تقوم بنوع الأعداد الصحيحة، وهو سلوك غير محدد:

لم يتم تعريف سلوك التحويل إلى عدد صحيح للأنواع الأخرى. لا تعتمد على أي سلوك ملحوظ لأنه قد يتغير دون سابق إنذار.

بياني أعلاه حول اختيار النوع كان خاطئًا. في الواقع، تعمل min() و max() مع المصفوفات، ولكن ليس بالطريقة التي يحتاجها OP للعمل. عند استخدام min() وmax() مع مصفوفات متعددة أو مصفوفة من عناصر المصفوفة، قارن العناصر عنصرًا بعنصر من اليسار إلى اليمين:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * مقارنة العنصر الأول بالعنصر الأول: 2 == 2 * مقارنة العنصر الثاني بالعنصر الثاني: 4< 5 * first array is considered the min and is returned */

يُترجم OP إلى المشكلة، ويوضح لماذا يبدو أن استخدام min() و max() مباشرة يعطي النتيجة الصحيحة. العناصر الأولى للمصفوفة هي id، لذا فإن min() و max() تقارنهما أولاً بالمناسبة، مما يؤدي إلى النتيجة الصحيحة، لأن المعرف الأدنى هو الذي يحتوي على أقل عدد والمعرف الأعلى هو المعرف الذي لديه أعلى عدد.

إنهاء التعديل

الطريقة الصحيحة هي استخدام حلقة.

$a = array(array("id" => 117, "name" => "الشبكات", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23)، array("id" => 189, "name" => "Internet", "count" => 48)); $دقيقة = PHP_INT_MAX؛ $ماكس = 0؛ foreach ($a كـ $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]); )

يمكنك استخدام الدالتين max() وmin().

ماذا فعلت مع حلقات متعددة؟ واحدة تكفي :)

  1. احصل على العنصر الأول عن طريق حساب عدد كل من $min وmax
  2. قم بالتكرار على الباقي، وقارن العداد بكل $min و$max، إذا كان أقل/أكبر، قم بتعيين قيمة عدد جديدة

يمكنك استخدام وظائف max/min لأنها ستعيد مصفوفة تحتوي على الحد الأقصى/الحد الأدنى لكل فهرس. يجب أن يُرجع المثال الخاص بك array(189, "Networking", 48) لـ max . يمكنك بعد ذلك الحصول على النتيجة من هذه المجموعة.

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

يبدو أنه لا يمكنك استخدام max() في مصفوفة ثنائية الأبعاد. إنها ببساطة تُرجع المصفوفة الأكبر، بدلاً من max() لكل فهرس (كما هو مذكور في عدة إجابات).

$count = array(); foreach($arr as $_arr) ( $count = $_arr["count"]; ) var_dump(max($count), min($count));

هل هناك ما يعادلها مدمجوظيفة لهذا؟ (حتى بدون الإمكانية اختبار)

/** * استرداد عمود من مصفوفة ثنائية الأبعاد مع تحديد اختياري فوق عمود آخر * * @param $ aArray للاسترداد من * @param $ aColName اسم العمود المراد استرداده، على سبيل المثال. "O_NAME" * اسم العمود @param $aColTest (اختياري) لتشغيل الاختبار، على سبيل المثال: "O_ID" * سلسلة @param $aTest (اختيارية) للاختبار السابق. ">=10"، "== "".$Toto. "" " * @return مصفوفة 1D مع العمود المستخرج فقط * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = ""، $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest ";"))) ( $ mRes = $row [ $ aColName ]; ) ) return $ mRes ) // extractColFromArray.