Add DB:IO strip non assoc entries from result

if we have a mixed result, strip all int key (non assoc) entries from the result
This commit is contained in:
2026-09-18 18:56:43 +09:00
parent 0b057864ae
commit 3a33f07ae7
2 changed files with 89 additions and 22 deletions
+53
View File
@@ -1007,6 +1007,59 @@ final class CoreLibsDBIOTest extends TestCase
$db->dbClose();
}
// MARK: stripAssocOnly
/**
* Data provider for stripAssocOnly tests
*
* @return array<mixed>
*/
public function stripAssocOnlyProvider(): array
{
return [
'empty' => [
[],
[]
],
'int only' => [
[0 => 'foo', 1 => 'bar'],
[],
],
'mixed' => [
[0 => 'foo', 'col_a' => 'foo', 1 => 'bar', 'col_b' => 'bar'],
['col_a' => 'foo', 'col_b' => 'bar'],
],
'key only' => [
['col_a' => 'foo', 'col_b' => 'bar'],
['col_a' => 'foo', 'col_b' => 'bar'],
]
];
}
/**
* Test for stripAssocOnly function
*
* @covers ::stripAssocOnly
* @dataProvider stripAssocOnlyProvider
* @testdox strip assoc non string entries from return [$_dataName]
*
* @param array<mixed> $input
* @param array<string,mixed> $expected
* @return void
*/
public function testStripAssocOnly(array $input, array $expected): void
{
$db = new \CoreLibs\DB\IO(
self::$db_config['valid'],
self::$log
);
$this->assertEquals(
$expected,
$db->stripAssocOnly($input)
);
$db->dbClose();
}
// - string escape tests
// dbEscapeString, dbEscapeLiteral, dbEscapeIdentifier,
+36 -22
View File
@@ -520,7 +520,7 @@ class IO
}
// *************************************************************
// PRIVATE METHODS
// MARK: PRIVATE METHODS
// *************************************************************
/**
@@ -1703,11 +1703,11 @@ class IO
}
// *************************************************************
// PUBLIC METHODS
// MARK: PUBLIC METHODS
// *************************************************************
// ***************************
// CLOSE, STATUS, SETTINGS VARIABLE READ
// MARK: CLOSE, STATUS, SETTINGS VARIABLE READ
// ***************************
/**
@@ -1950,7 +1950,7 @@ class IO
}
// ***************************
// DEBUG DATA DUMP
// MARK: DEBUG DATA DUMP
// ***************************
/**
@@ -1978,7 +1978,7 @@ class IO
}
// ***************************
// CHECK QUERY TYPE
// MARK: CHECK QUERY TYPE
// ***************************
/**
@@ -2035,7 +2035,7 @@ class IO
}
// ***************************
// DATA WRITE CONVERSION
// MARK: DATA WRITE CONVERSION
// ***************************
/**
@@ -2156,7 +2156,7 @@ class IO
}
// ***************************
// DATA READ/WRITE CONVERSION
// MARK: DATA READ/WRITE CONVERSION
// ***************************
/**
@@ -2194,7 +2194,7 @@ class IO
}
// ***************************
// DATA READ CONVERSION
// MARK: DATA READ CONVERSION
// ***************************
/**
@@ -2263,8 +2263,22 @@ class IO
return is_array($__db_array_parse) ? $__db_array_parse : [];
}
/**
* Will strip all single numberic entries from the array.
* This is for database return
*
* @param array<mixed> $res
* @return array<string,mixed>
*/
public function stripAssocOnly(array $res): array
{
return array_filter($res, function ($key) {
return !is_numeric($key);
}, ARRAY_FILTER_USE_KEY);
}
// ***************************
// TABLE META DATA READ
// MARK: TABLE META DATA READ
// ***************************
/**
@@ -2290,7 +2304,7 @@ class IO
}
// ***************************
// QUERY EXECUSION AND DATA READ
// MARK: QUERY EXECUSION AND DATA READ
// ***************************
/**
@@ -2927,7 +2941,7 @@ class IO
}
// ***************************
// CURSOR RETURN
// MARK: CURSOR RETURN
// ***************************
/**
@@ -2941,7 +2955,7 @@ class IO
}
// ***************************
// CURSOR EXT CACHE RESET
// MARK: CURSOR EXT CACHE RESET
// ***************************
/**
@@ -2971,7 +2985,7 @@ class IO
}
// ***************************
// CURSOR EXT DATA CHECK
// MARK: CURSOR EXT DATA CHECK
// ***************************
/**
@@ -3066,7 +3080,7 @@ class IO
}
// ***************************
// MAXIMUM QUERY EXECUTION CHECK HELPERS
// MARK: MAXIMUM QUERY EXECUTION CHECK HELPERS
// ***************************
/**
@@ -3102,7 +3116,7 @@ class IO
}
// ***************************
// PREPARED QUERY WORK
// MARK: PREPARED QUERY WORK
// ***************************
/**
@@ -3379,7 +3393,7 @@ class IO
}
// ***************************
// ASYNCHRONUS EXECUTION/CHECK
// MARK: ASYNCHRONUS EXECUTION/CHECK
// ***************************
/**
@@ -3539,7 +3553,7 @@ class IO
}
// ***************************
// COMPLEX WRITE WITH CONFIG ARRAYS
// MARK: COMPLEX WRITE WITH CONFIG ARRAYS
// ***************************
// ** REMARK **
@@ -3720,7 +3734,7 @@ class IO
}
// ***************************
// INTERNAL SETTINGS READ/CHANGE
// MARK: INTERNAL SETTINGS READ/CHANGE
// ***************************
/**
@@ -4048,7 +4062,7 @@ class IO
}
// ***************************
// QUERY DATA AND DB HANDLER
// MARK: QUERY DATA AND DB HANDLER
// ***************************
/**
@@ -4151,7 +4165,7 @@ class IO
}
// ***************************
// INTERNAL VARIABLES READ POST QUERY RUN
// MARK: INTERNAL VARIABLES READ POST QUERY RUN
// ***************************
/**
@@ -4442,7 +4456,7 @@ class IO
}
// ***************************
// ERROR AND WARNING DATA
// MARK: ERROR AND WARNING DATA
// ***************************
/**
@@ -4499,7 +4513,7 @@ class IO
}
// ***************************
// DEPEREACTED CALLS
// MARK: DEPEREACTED CALLS
// all call below are no longer in use and throw deprecated errors
// ***************************