اذهب إلى المحتوى
  • 0

كيف أعرف اكثر اسم موجود داخل مصفوفة والعكس php

Samir Boukheche

السؤال

مثلا لدي مصفوفة تحمل اسماء البائعين التالية :

('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد')superm=array$

اريد ان اعرف ان اضهر اسم اكثر شخص ظهر في المصفوفة في هاته الحالة هو محمد

والاسم الدي ظهر اقل في المصفوفة

php

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يُمكنك إستخدام الدالة: array_count_values التي تُعيد عدد المرات التي يظهر فيها كل عنصر في المصفوفة على سبيل المثال:

<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
print_r($values);

سيُعطي النتيجة:

Array
(
    [محمد] => 4
    [رضا] => 2
    [أبراهيم] => 1
)

ثم إستخدام الدالة arsort لترتيب المصفوفة التي تحصلنا عليها بشكل عكسي حسب عدد التكرارات.

<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
arsort($values);
print_r($values);

سنحصل على النتيجة:

Array
(
    [محمد] => 4
    [رضا] => 2
    [أبراهيم] => 1
)

تحصلنا على نفس النتيجة لأن محمد يأتي أول الترتيب في المصفوفة المعطاة و رضا يأتي ثانياً لو جعلنا على سبيل المثال ابراهيم أولا  لحصلنا على نتيجتين مختلفتين. ثم للحصول على المفاتيح فقط أي محمد و رضا و ... نستخدم الدالة array_keys التي سترجع مصفوفة تضم الأسماء حيث أول عنصر هو الأكثر تكرار و آخر عنصر هو الأقل تكرار:

<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
arsort($values);
print_r($values);

/* Output:

Array
(
    [0] => محمد
    [1] => رضا
    [2] => أبراهيم
)


*/
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

سنحتاج تحضير مصفوفة تحمل عدد مرات ظهور كل عنصر , ثم سيكون علينا تحديد الفهرس بالقيمة الأكبر أو الأصغر .

مثال عملي :

  1. يمكننا الإستعانة بالدالة array_count_values لحساب عدد المرات التي ظهر فيها كل عنصر سلسلة نصية أو رقم من المصفوفة . 
    $arr = array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
    $ordered = array_count_values($arr); 

     

  2. ثم سيكون علينا قراءة العنصر بالقيمة الأكبر , يمكن ذلك عن طريق الدالة max , أو الأصغر عن طريق الدالة min , التان تقومان بجلب العنصر ذي القيمة الأكبر و الأصغر على التوالي في مصفوفة أعداد . 
    $ordered = array_count_values($arr); 
    $max = max($ordered);
    $min = min($ordered);

     

  3. و كخطوة أخيرة سنحتاج البحث عن المفتاح المرافق للقيمة الأكبر أو الأصغر المعادة في مصفوفة التي يتم إعادتها من الخطوة 1  . 
    $maxVal = array_search($max, $ordered);
    
    $minVal = array_search($min, $ordered);

     

فيكون الكود كاملا : 

$arr = array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$ordered = array_count_values($arr); 

$maxVal = array_search(max($ordered), $ordered);
$minVal = array_search(min($ordered), $ordered);

يمكنك الإطلاع على توثيق كل دالة مما تم إستعماله : 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

لفهم كيفية حساب العناصر المتكررة في مصفوفة  هناك دالة ()array_count_values و  هي دالة مضمنة في PHP تُستخدم لحساب جميع القيم الموجودة داخل المصفوفة. بعبارة أخرى ، يمكننا القول أن الدالة ()array_count_values تُستخدم لحساب تكرار جميع عناصر المصفوفة.

وتستخدم كالتالي : 

array array_count_values( $array )

المعلمات: تقبل هذه الدالة مصفوفة واحد كمعامل. هذه المعلمة هي المصفوفة التي نحتاج إلى حساب عدد القيم الموجودة فيها.

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

مثال:

<?php

$output  =  array_count_values(["Geeks", "hsoub", "Geeks", "Geeks", "Welcome", "hsoub"]);
/* النتيجة : 
        Array
        (
          [Geeks] => 3
          [hsoub] => 2
          [Welcome] => 1
        )
*/

$output =  array_count_values([1, 1, 2, 3 , 1 , 2 , 4, 5]);
/* النتيجة :
       Array
       (
         [1] => 3
         [2] => 2
         [3] => 1
         [4] => 1
         [5] => 1
       )
*/

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

<?php
$array = array_count_values(["Geeks", "hsoub", "Geeks", "Geeks", "Welcome", "hsoub"]);
echo array_search(max($array), $array);
/**
 النتيجة:
  
 Geeks
 
*/

$array = array_count_values([1, 1, 2, 3 , 1 , 2 , 4, 5]);
echo array_search(max($array), $array);
/**
 النتيجة:
  
 1
 
*/

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 12 دقائق مضت قال محمد أيت لعرايك:

لفهم كيفية حساب العناصر المتكررة في مصفوفة  هناك دالة ()array_count_values و  هي دالة مضمنة في PHP تُستخدم لحساب جميع القيم الموجودة داخل المصفوفة. بعبارة أخرى ، يمكننا القول أن الدالة ()array_count_values تُستخدم لحساب تكرار جميع عناصر المصفوفة.

وتستخدم كالتالي : 


array array_count_values( $array )

المعلمات: تقبل هذه الدالة مصفوفة واحد كمعامل. هذه المعلمة هي المصفوفة التي نحتاج إلى حساب عدد القيم الموجودة فيها.

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

مثال:


<?php

$output  =  array_count_values(["Geeks", "hsoub", "Geeks", "Geeks", "Welcome", "hsoub"]);
/* النتيجة : 
        Array
        (
          [Geeks] => 3
          [hsoub] => 2
          [Welcome] => 1
        )
*/

$output =  array_count_values([1, 1, 2, 3 , 1 , 2 , 4, 5]);
/* النتيجة :
       Array
       (
         [1] => 3
         [2] => 2
         [3] => 1
         [4] => 1
         [5] => 1
       )
*/

لاكن لو اردنا جلب قيم من قاعدة البيانات نستعمل الدالة while

 while($row = mysqli_fetch_array

مثلا الاسماء التالية في جدول البيانات 

محمد

محمد

رضا

محمد

محمد

ابراهيم 

رضا 

محمد

كيف نقوم باستدعاء من قاعدة البيانات اكثر اسم متكرر

واقل اسم متكرر

 

 

بتاريخ 27 دقائق مضت قال Adnane Kadri:

سنحتاج تحضير مصفوفة تحمل عدد مرات ظهور كل عنصر , ثم سيكون علينا تحديد الفهرس بالقيمة الأكبر أو الأصغر .

مثال عملي :

  1. يمكننا الإستعانة بالدالة array_count_values لحساب عدد المرات التي ظهر فيها كل عنصر سلسلة نصية أو رقم من المصفوفة . 
    
    $arr = array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
    $ordered = array_count_values($arr); 

     

  2. ثم سيكون علينا قراءة العنصر بالقيمة الأكبر , يمكن ذلك عن طريق الدالة max , أو الأصغر عن طريق الدالة min , التان تقومان بجلب العنصر ذي القيمة الأكبر و الأصغر على التوالي في مصفوفة أعداد . 
    
    $ordered = array_count_values($arr); 
    $max = max($ordered);
    $min = min($ordered);

     

  3. و كخطوة أخيرة سنحتاج البحث عن المفتاح المرافق للقيمة الأكبر أو الأصغر المعادة في مصفوفة التي يتم إعادتها من الخطوة 1  . 
    
    $maxVal = array_search($max, $ordered);
    
    $minVal = array_search($min, $ordered);

     

فيكون الكود كاملا : 


$arr = array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$ordered = array_count_values($arr); 

$maxVal = array_search(max($ordered), $ordered);
$minVal = array_search(min($ordered), $ordered);

يمكنك الإطلاع على توثيق كل دالة مما تم إستعماله : 

لاكن لو اردنا جلب قيم من قاعدة البيانات نستعمل الدالة while

 while($row = mysqli_fetch_array

مثلا الاسماء التالية في جدول البيانات 

محمد

محمد

رضا

محمد

محمد

ابراهيم 

رضا 

محمد

كيف نقوم باستدعاء من قاعدة البيانات اكثر اسم متكرر

واقل اسم متكرر

بتاريخ منذ ساعة مضت قال عبود سمير:

يُمكنك إستخدام الدالة: array_count_values التي تُعيد عدد المرات التي يظهر فيها كل عنصر في المصفوفة على سبيل المثال:


<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
print_r($values);

سيُعطي النتيجة:


Array
(
    [محمد] => 4
    [رضا] => 2
    [أبراهيم] => 1
)

ثم إستخدام الدالة arsort لترتيب المصفوفة التي تحصلنا عليها بشكل عكسي حسب عدد التكرارات.


<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
arsort($values);
print_r($values);

سنحصل على النتيجة:


Array
(
    [محمد] => 4
    [رضا] => 2
    [أبراهيم] => 1
)

تحصلنا على نفس النتيجة لأن محمد يأتي أول الترتيب في المصفوفة المعطاة و رضا يأتي ثانياً لو جعلنا على سبيل المثال ابراهيم أولا  لحصلنا على نتيجتين مختلفتين. ثم للحصول على المفاتيح فقط أي محمد و رضا و ... نستخدم الدالة array_keys التي سترجع مصفوفة تضم الأسماء حيث أول عنصر هو الأكثر تكرار و آخر عنصر هو الأقل تكرار:


<?php

$superm= array('محمد','رضا','أبراهيم','محمد','محمد','رضا','محمد');
$values = array_count_values($superm);
arsort($values);
print_r($values);

/* Output:

Array
(
    [0] => محمد
    [1] => رضا
    [2] => أبراهيم
)


*/

لاكن لو اردنا جلب قيم من قاعدة البيانات نستعمل الدالة while

 while($row = mysqli_fetch_array

مثلا الاسماء التالية في جدول البيانات 

محمد

محمد

رضا

محمد

محمد

ابراهيم 

رضا 

محمد

كيف نقوم باستدعاء من قاعدة البيانات اكثر اسم متكرر

واقل اسم متكرر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Reda Boukheche:

لاكن لو اردنا جلب قيم من قاعدة البيانات نستعمل الدالة while

 while($row = mysqli_fetch_array

مثلا الاسماء التالية في جدول البيانات 

محمد

محمد

رضا

محمد

محمد

ابراهيم 

رضا 

محمد

كيف نقوم باستدعاء من قاعدة البيانات اكثر اسم متكرر

واقل اسم متكرر

ارجو أن تُحدد في سؤالك ماذا تريد بالضبط حتى نستطيع تقديم المساعدة بشكل دقيق إذا كنت تريد الإستعلام عن أكثر اسم مكرر و ليكن إسم الحقل هو name و الجدول الذي تريد الإستعلام منه هو users يُمكنك إستخدام الإستعلام التالي لجلب أكثر إسم مكرر:

<?php

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name) DESC
            LIMIT 1";

$result = mysqli_query($db, $query);
if ($result) {
    $row = mysqli_fetch_assoc($result);
    print_r($row);
}

أما إن كنت تريد الأقل تكراراً فبدل الترتيب التنازلي نستخدم الترتيب التصاعدي :

<?php

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name) ASC
            LIMIT 1";

// أو

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name)
            LIMIT 1";
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

كما ذكرت لك في الإجابة الأولى اولا يجب ان تأتي بجميع الاسماء على شكل مصفوفة من قاعدة الببانات.

<?php
$query = "SELECT name from users";

$result = mysqli_query($db, $query);
if ($result) {
    $names = mysqli_fetch_assoc($result);
    //  $names قم بتفيذ الأوامر التي ذكرت في الجواب الأول هنا بإستعمال المصفوفة 
}

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 11 ساعات قال عبود سمير:

ارجو أن تُحدد في سؤالك ماذا تريد بالضبط حتى نستطيع تقديم المساعدة بشكل دقيق إذا كنت تريد الإستعلام عن أكثر اسم مكرر و ليكن إسم الحقل هو name و الجدول الذي تريد الإستعلام منه هو users يُمكنك إستخدام الإستعلام التالي لجلب أكثر إسم مكرر:


<?php

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name) DESC
            LIMIT 1";

$result = mysqli_query($db, $query);
if ($result) {
    $row = mysqli_fetch_assoc($result);
    print_r($row);
}

أما إن كنت تريد الأقل تكراراً فبدل الترتيب التنازلي نستخدم الترتيب التصاعدي :


<?php

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name) ASC
            LIMIT 1";

// أو

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name)
            LIMIT 1";

Array ( [vendeur] => Rida gsm [c] => 2 ) 1

لاكن هنا تم طبع المصفوفة اريد الاسم rida gsm فقط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 7/7/2021 at 04:27 قال محمد أيت لعرايك:

كما ذكرت لك في الإجابة الأولى اولا يجب ان تأتي بجميع الاسماء على شكل مصفوفة من قاعدة الببانات.


<?php
$query = "SELECT name from users";

$result = mysqli_query($db, $query);
if ($result) {
    $names = mysqli_fetch_assoc($result);
    //  $names قم بتفيذ الأوامر التي ذكرت في الجواب الأول هنا بإستعمال المصفوفة 
}

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

 

لاكن هل نستخدم if ام while  ربما الثانية افضل خي التي تعمل دوران على كل الصفوف

لاكن يظهر لي اول اسم مكتوب في المصفوفة وليس الاكثر تكرار

مثال يظهرلي casa phone 

مع انو gsm rida هو الاكثر تكرار

 <div class="col-lg-3 col-xs-6">
                    <div class="small-box bg-purple">
                        <div class="inner">
                           <?php
                              error_reporting(0);
                            $count=0;
                          $sql="select vendeur from cards where finshed = '1' ";
                        $result=$conn->query($sql);
                        while($row = mysqli_fetch_assoc($result))
                         {
                        

                            $sq=array_count_values($row);
                        
                          ?>    
                            
                        <h3><?php echo array_search(max($sq), $sq) ?></h3>
                            <?php
                        }
                            

                            
                            ?>
                             

                            <p>اسم أكثر بائع نشيط</p>
                        </div>
                        <div class="icon">
                            <i class="fa fa-home"></i>
                        </div>
                        <a href="shop" class="small-box-footer">عرض <i class="fa fa-arrow-circle-right"></i></a>
                    </div>
                </div>



 <div class="col-lg-3 col-xs-6">
                    <div class="small-box bg-purple">
                        <div class="inner">
                           <?php
                              error_reporting(0);
                            $count=0;
                          $sql="select vendeur from cards where finshed = '1' ";
                        $result=$conn->query($sql);
                        while($row = mysqli_fetch_assoc($result))
                         {
                        

                            $sq=array_count_values($row);
                        
                          ?>    
                            
                        <h3><?php echo array_search(max($sq), $sq) ?></h3>
                            <?php
                        }
                            

                            
                            ?>
                             

                            <p>اسم أكثر بائع نشيط</p>
                        </div>
                        <div class="icon">
                            <i class="fa fa-home"></i>
                        </div>
                        <a href="shop" class="small-box-footer">عرض <i class="fa fa-arrow-circle-right"></i></a>
                    </div>
                </div>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

لاعرف اي بائع دكر اسمه اكثر 

علما استعمل while

222.PNG

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 ساعات قال Reda Boukheche:

Array ( [vendeur] => Rida gsm [c] => 2 ) 1

لاكن هنا تم طبع المصفوفة اريد الاسم rida gsm فقط

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

<?php

$query = "SELECT name, COUNT(name) as c from users
            GROUP BY name
            ORDER BY COUNT(name) desc
            LIMIT 1";

$result = mysqli_query($db, $query);
if ($result) {
  $row = mysqli_fetch_assoc($result);
  echo $row['name'];
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إذا كنت تريد كتابة إستعلام واحد و الحصول على الإسم الأكثر تكرارا يمكنك إستخدام الإستعلام التالي:

 

SELECT       `name`
    FROM     `users`
    GROUP BY `name`
    ORDER BY COUNT(*) DESC
    LIMIT    1;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...