ما هي الطريقة السهلة لوضع عنصر في منتصف مجموعة PHP؟

StackOverflow https://stackoverflow.com/questions/620709

  •  05-07-2019
  •  | 
  •  

سؤال

لنفترض أن لديك مجموعة مفهرسة من 10 عناصر وتريد وضع عنصر في مكان ما في الوسط (قل الفهرس 3). ثم أريد أن أحصل على بقية تحول الصفيف وبالتالي يكون 11 عنصرًا. هل هناك طريقة سهلة للقيام بذلك؟

أنا مندهش من أنه لا يوجد put() وظيفة أو شيء من هذا القبيل.

أعلم أنه سيكون من السهل بما يكفي للقيام بذلك بمزيج من array_splice و array_merge لكنني كنت أتساءل فقط عما إذا كان هناك طريقة أسهل.

هل كانت مفيدة؟

المحلول

array_splice () يفعل هذا

$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green", "blue", "purple", "yellow");

نصائح أخرى

لسوء الحظ ، أفضل رهان لك هو ما وصفته في رسالتك.

إذا كنت تستخدم Array_Splice () ، فسيتعين على PHP نسخ نصف الصفيف للقيام بالإدراج ، والذي سيكون بمثابة نجاح للأداء لأحجام الصفيف الكبيرة. ربما يجب أن تستخدم قائمة قاعدة بيانات أو شجرة بدلاً من ذلك؟

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

لا يمكن لأي وظيفة PHP التعامل مع هذا حاليًا. ومع ذلك ، ليس من الصعب للغاية أن تضربها ، ولكن:

function array_insert(&$array, $insert, $position) {
    $c = count($array);
    $slice = array_merge($insert, array_slice($array, $position));
    array_splice($array, $position, $c, $slice);
}

$array = array('a','b','d','e');
print_r($array);
array_insert($array, array('c'), 2);
print_r($array);

سوف يؤدي إلى:

Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)

ربما يمكنك إضافة شيكات إذا كان الموضع أكبر من الصفيف ، فإن الإدراج ليس صفيفًا ، إلخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top