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

كيفية البحث في مصفوفة متعددة الأبعاد في PHP؟

Mohssen A Mohssen

السؤال

لدي مصفوفة متعددة الأبعاد (مصفوفة بداخلها مصفوفات أخرى)، بالشكل التالي:

$userdb = Array
(
    (0) => Array
        (
            ('id') => '1',
            ('username') => 'Sara ahmed',
            ('email') => 'sara@gmail.com'
        ),

    (1) => Array
        (
            ('id') => '2',
            ('username') => 'Saif Al Deen',
            ('email') => 'saif@gmail.com'
        ),

    (2) => Array
        (
            ('id') => '3',
            ('username') => 'emad saif',
            ('email') => 'emad@gmail.com'
        )
);

واريد أن أبحث عن قيمة معينة في هذه المصفوفة، لكي لا أعلم كيف أستخدم الدالة in_array (على سبيل المثال) للبحث في مثل هذه المصفوفات المتداخلة؟

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

Recommended Posts

  • 1

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

$username_exists = in_array('Saif Al Deen', array_column($userdb, 'username'));

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

foreach($userdb as $user){
  if($user['username'] === 'emad saif' && $user['email'] === 'emad@gmail.com'){
     // المستخدم موجود
  }
}

يمكن تضمين العملية السابقة ضمن تابع لسهولة الاستخدام وجعل الشيفرة مقروءة بشكل أكبر كالتالي:

function user_exists($users, $username, $email){
  foreach($users as $user){
    if($user['username'] === $username && $user['email'] === $email){
       return true;
    }
   }
  return false;
}

// ..

$exists = user_exists($userdb, 'emad saif', 'emad@gmail.com');

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...