Bird
Raised Fist0
PHPprogramming~10 mins

Array slice and splice in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Array slice and splice
Start with original array
↓
Choose slice or splice
↓
Slice: Extract part
↓
Return new array
↓
End
You start with an array, then choose slice to get a part without changing the original, or splice to remove/insert parts and change the original.
Execution Sample
PHP
<?php
$arr = [10, 20, 30, 40, 50];
$slice = array_slice($arr, 1, 3);
array_splice($arr, 2, 2, [99, 100]);
print_r($slice);
print_r($arr);
?>
This code slices a part of the array and then splices (removes and inserts) elements, showing both results.
Execution Table
StepActionArray BeforeParametersArray AfterOutput
1Define original arrayN/AN/A[10, 20, 30, 40, 50]N/A
2Slice from index 1, length 3[10, 20, 30, 40, 50]start=1, length=3[10, 20, 30, 40, 50][20, 30, 40]
3Splice at index 2, remove 2, insert [99, 100][10, 20, 30, 40, 50]start=2, length=2, insert=[99,100][10, 20, 99, 100, 50]N/A
4Print slice array[10, 20, 99, 100, 50]N/A[10, 20, 99, 100, 50][20, 30, 40]
5Print modified original array[10, 20, 99, 100, 50]N/A[10, 20, 99, 100, 50][10, 20, 99, 100, 50]
💡 All steps completed, slice returned new array, splice modified original array.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
$arrN/A[10, 20, 30, 40, 50][10, 20, 99, 100, 50][10, 20, 99, 100, 50]
$sliceN/A[20, 30, 40][20, 30, 40][20, 30, 40]
Key Moments - 3 Insights
Why does array_slice not change the original array?
Because array_slice returns a new array with the selected elements, leaving the original array unchanged, as shown in step 2 of the execution_table.
How does array_splice modify the original array?
array_splice removes elements starting at the given index and inserts new elements if provided, changing the original array directly, as seen in step 3 where $arr changes.
What happens if the length parameter in array_slice is longer than the remaining elements?
array_slice returns all elements from the start index to the end without error, just fewer elements than requested, similar to how step 2 extracts 3 elements starting at index 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2, what is the value of $slice?
A[30, 40, 50]
B[10, 20, 30]
C[20, 30, 40]
D[99, 100, 50]
💡 Hint
Check the Output column at step 2 in execution_table.
At which step does the original array $arr get modified?
AStep 3
BStep 4
CStep 2
DStep 5
💡 Hint
Look at the Array After column for $arr changes in execution_table.
If we change array_splice to remove 1 element instead of 2, how would $arr look after step 3?
A[10, 20, 99, 100, 50]
B[10, 20, 99, 100, 40, 50]
C[10, 20, 30, 40, 50]
D[10, 20, 99, 40, 50]
💡 Hint
Removing fewer elements means more original elements stay; check how splice works in execution_table step 3.
Concept Snapshot
array_slice(array, start, length) returns a new array slice without changing original.
array_splice(array, start, length, replacement) removes and inserts elements, modifying original.
Slice keeps original intact; splice changes it.
Start index is zero-based.
Length is optional in slice; in splice it controls removal count.
Splice can insert elements by passing replacement array.
Full Transcript
This visual trace shows how PHP's array_slice and array_splice work. We start with an original array. array_slice extracts a part from it without changing the original array, returning a new array. array_splice removes elements from the original array starting at a given index and can insert new elements, modifying the original array directly. The execution table tracks each step, showing the array before and after each operation, parameters used, and outputs. The variable tracker follows the values of $arr and $slice through the steps. Key moments clarify common confusions like why slice doesn't change the original and how splice modifies it. The quiz tests understanding by asking about values at specific steps and effects of parameter changes. The snapshot summarizes the main points for quick review.

Practice

(1/5)
1. What is the main difference between array_slice and array_splice in PHP?
easy
A. array_slice returns a new array without changing the original, while array_splice modifies the original array.
B. array_slice modifies the original array, while array_splice returns a new array without changes.
C. Both functions modify the original array but in different ways.
D. Both functions return a new array and do not modify the original array.

Solution

  1. Step 1: Understand array_slice behavior

    array_slice extracts a portion of the array and returns it as a new array without changing the original array.
  2. Step 2: Understand array_splice behavior

    array_splice removes or replaces elements in the original array and returns the removed elements, thus modifying the original array.
  3. Final Answer:

    array_slice returns a new array without changing the original, while array_splice modifies the original array. -> Option A
  4. Quick Check:

    Slice copies, splice changes original [OK]
Hint: Slice copies array parts, splice changes the original array [OK]
Common Mistakes:
  • Thinking both functions modify the original array
  • Confusing which function returns a new array
  • Assuming splice returns the modified array instead of removed elements
2. Which of the following is the correct syntax to remove 2 elements starting from index 1 using array_splice on array $arr?
easy
A. array_splice($arr, 2, 1);
B. array_splice($arr, 1);
C. array_splice($arr, 1, 2);
D. array_splice($arr, 0, 2);

Solution

  1. Step 1: Identify parameters of array_splice

    The function signature is array_splice(array &$array, int $offset, int $length = ?). To remove 2 elements starting at index 1, offset = 1 and length = 2.
  2. Step 2: Match parameters to options

    array_splice($arr, 1, 2); uses array_splice($arr, 1, 2); which correctly removes 2 elements starting from index 1.
  3. Final Answer:

    array_splice($arr, 1, 2); -> Option C
  4. Quick Check:

    Offset 1, length 2 removes correct elements [OK]
Hint: array_splice($arr, start, length) removes elements from start [OK]
Common Mistakes:
  • Swapping offset and length values
  • Omitting length parameter and removing all after offset
  • Using wrong index for offset
3. What will be the output of the following PHP code?
$arr = [10, 20, 30, 40, 50];
$result = array_slice($arr, 2, 2);
print_r($result);
medium
A. [30, 40]
B. [20, 30]
C. [40, 50]
D. [10, 20]

Solution

  1. Step 1: Understand array_slice parameters

    It extracts elements starting at index 2, taking 2 elements from $arr.
  2. Step 2: Extract elements from the array

    Index 2 is 30, next element is 40, so the slice is [30, 40].
  3. Final Answer:

    [30, 40] -> Option A
  4. Quick Check:

    Slice from index 2, length 2 = [30, 40] [OK]
Hint: array_slice returns a new array from offset with given length [OK]
Common Mistakes:
  • Confusing index start point
  • Assuming original array is changed
  • Mixing up array_slice with array_splice
4. Consider this code snippet:
$arr = [1, 2, 3, 4, 5];
array_splice($arr, 2, 2, [8, 9]);
print_r($arr);

What is the output?
medium
A. [1, 2, 3, 4, 8, 9, 5]
B. [1, 2, 3, 4, 5]
C. [8, 9, 5]
D. [1, 2, 8, 9, 5]

Solution

  1. Step 1: Understand array_splice with replacement

    The call removes 2 elements starting at index 2 (elements 3 and 4) and inserts [8, 9] at that position.
  2. Step 2: Modify the original array accordingly

    Original array: [1, 2, 3, 4, 5]
    Remove elements at index 2 and 3: [3, 4]
    Insert [8, 9] at index 2
    Resulting array: [1, 2, 8, 9, 5]
  3. Final Answer:

    [1, 2, 8, 9, 5] -> Option D
  4. Quick Check:

    Splice replaces elements with new ones [OK]
Hint: Splice can replace elements by passing replacement array [OK]
Common Mistakes:
  • Expecting original array unchanged
  • Forgetting splice removes elements before inserting
  • Confusing splice insertion with append
5. You have an array $data = [5, 10, 15, 20, 25, 30]. You want to remove the middle two elements and insert 100 and 200 in their place, then get a new array with the last three elements without changing the original array. Which code snippet correctly does this?
hard
A.
array_splice($data, 2, 2, [100, 200]);
$copy = array_slice($data, -3);
print_r($copy);
B.
$copy = array_slice($data, -3);
array_splice($data, 2, 2, [100, 200]);
print_r($copy);
C.
$copy = array_splice($data, -3);
array_splice($data, 2, 2, [100, 200]);
print_r($copy);
D.
$copy = array_slice($data, 2, 3);
array_splice($data, 2, 2, [100, 200]);
print_r($copy);

Solution

  1. Step 1: Extract last three elements without changing original

    Using array_slice($data, -3) copies last three elements [20, 25, 30] into $copy without modifying $data.
  2. Step 2: Modify original array by replacing middle two elements

    array_splice($data, 2, 2, [100, 200]) removes elements at index 2 and 3 (15, 20) and inserts 100 and 200.
  3. Step 3: Print the copied array

    Printing $copy shows the last three elements of the original array before modification.
  4. Final Answer:

    $copy = array_slice($data, -3); array_splice($data, 2, 2, [100, 200]); print_r($copy); -> Option B
  5. Quick Check:

    Slice first to copy, then splice to modify [OK]
Hint: Slice first to copy, then splice to modify original [OK]
Common Mistakes:
  • Using splice to copy array (modifies original)
  • Modifying array before slicing (copy changes)
  • Wrong slice parameters for last elements
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard