Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,753 questions

55,518 answers

573 users

How to build sparse array in PHP

1 Answer

0 votes
/*
    A sparse array stores only non‑zero values.
    PHP's associative array is a natural fit:
      - Keys represent indices that actually exist
      - Values represent stored data
      - Lookup and insertion are fast
*/

/*
    buildDense:
    Converts sparse → dense.

    Steps:
    1. Find the maximum index in the sparse structure
    2. Allocate a dense array of size maxIndex + 1
    3. Fill with zeros
    4. Copy sparse values into their positions
*/
function buildDense(array $sa): array
{
    // Find largest index
    $maxIndex = 0;
    foreach ($sa as $index => $value) {
        if ($index > $maxIndex) {
            $maxIndex = $index;
        }
    }

    // Allocate dense array filled with zeros
    $dense = array_fill(0, $maxIndex + 1, 0);

    // Copy sparse values
    foreach ($sa as $index => $value) {
        $dense[$index] = $value;
    }

    return $dense;
}

// Sparse entries (zero values omitted)
$sa = [
    2  => 10,
    10 => 7,
    8  => 42,
    3  => 5
];

$dense = buildDense($sa);

// Print dense array
echo "Dense array:\n[ ";
foreach ($dense as $v) {
    echo $v . " ";
}
echo "]\n";


/*
run:

Dense array:
[ 0 0 10 5 0 0 0 0 42 0 7 ]

*/

 



answered 2 days ago by avibootz
...