目前我的"方法"检查array_key是否在数组中,我需要补充一点,如果密钥长度为 13 没关系,但是当它更长时,它必须删除列表的前 5 个数字。我的代码根据我的密钥从数据库中搜索价格,并将其与"密钥"略有不同的列表进行比较。因此,为了更容易理解:
我的数据库中的键是:2840529503100
表中我必须从中获取价格的关键是:000002840529503100 所以我基本上需要做的是从"列表"或"表"中获取一个子字符串,它接受最后 13 个数字,因为我数据库的正确键总是 13 个数字长。
$teile = array();
while ($dbRow = $sqlres->fetch_assoc()) {
$teile[$dbRow['nummer']] = $dbRow;
if (array_key_exists($fileRow[0], $teile)) {
如果你的前五个 0 值是常量,这意味着你可以像这样使用 substr():
$str = '000002840529503100';
echo $str2 = substr($str, 5);
另一种substr()
方法是仅保留最后 13 位数字,如下所示:
$str = '000002840529503100';
echo $str2 = substr($str, -13);
否则,要删除前 0 个值,您可以使用ltrim()
如下所示:
echo ltrim('000002840529503100', '0');
注意:没有引号,这两个函数将不起作用。
作为Nawins解决方案的替代方案,您还可以使用PHP Typecasting自动删除前导零。
注意:对于我的例子;我看不出您要更改哪个变量。但假设第一个...
因此:
$fileRow[0] = "000002840529503100"
(int)$fileRow[0] = "2840529503100";
这将使:
if (array_key_exists((int)$fileRow[0], $teile)) {
...
}
注意:
此示例不会更改$fileRow[0]
的存储值,因此将其用作将来的键引用 (~print $array[$fileRow[0]]
) 仍将使用较长的数字,直到将(int)
版本设置为变量/键值,例如:
$fileRow[0] = (int)$fileRow[0];