From 291b5081432c90fc629bcf9f3326aed3347e7b19 Mon Sep 17 00:00:00 2001 From: Fredrik Sundin Date: Wed, 19 Aug 2020 22:41:08 +0000 Subject: [PATCH] Replace array_search to optimize large arrays --- src/SimpleXLSXGen.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/SimpleXLSXGen.php b/src/SimpleXLSXGen.php index 46a83e4..0d0b346 100644 --- a/src/SimpleXLSXGen.php +++ b/src/SimpleXLSXGen.php @@ -162,6 +162,7 @@ class SimpleXLSXGen { } $SI = []; + $SI_KEYS = []; $COLS = []; $ROWS = []; if ( count($this->rows) ) { @@ -212,10 +213,15 @@ class SimpleXLSXGen { } else { $ct = 's'; // shared string $v = str_replace(['&','<','>'],['&','<','>'], $v); - $cv = array_search( $v, $SI, true ); + $cv = false; + if ( isset($SI_KEYS[$v]) ) { + $cv = $SI_KEYS[$v]; + } + if ( $cv === false ) { $SI[] = $v; $cv = count( $SI ) - 1; + $SI_KEYS[$v] = $cv; } } } elseif ( is_int( $v ) || is_float( $v ) ) {