如何从字符串变量中获取读取为整数的 CSV 整数
Posted
技术标签:
【中文标题】如何从字符串变量中获取读取为整数的 CSV 整数【英文标题】:How to get CSV integers read as integers from a string variable 【发布时间】:2020-05-30 07:46:36 【问题描述】:我有一个字符串,我从 xml 文件中清理了一些值。
$resolutions=strip_tags($resolutions,allow); // gives me '75 75 300 300 600 600'
然后我将空格改为逗号:
$resolutions = preg_replace('#\s+#',',',trim($resolutions)); // gives me '75,75,300,300,600,600'
然后我接受它并想像这样提取最小值和最大值
$resolution_min = min($resolutions);
在页面上显示
echo $resolution_min; // still gives me '75,75,300,300,600,600'
但是,当我更改希望在页面上显示的代码时
echo min(75,75,300,300,600,600); // it displays '75' as it should
我认为,问题在于 CSV 值被解释为单个文本字符串,我需要将它们读取为 CSV 整数值。
有什么方法可以强制将它们读取为 min 和 max 的数值?
我认为我的部分问题来自这一行或类似的行,就在“爆炸”命令之前
$list = "" . substr($scansupportedresolutions, $start,$length) . "";
我从来没有见过这种双引号点和点双双引号,不知道是什么意思
是不是简单地说 $list 中的整个字符串都是
".<CONTENT HERE>."
但特别是双引号?无论是什么,我似乎对爆炸命令都至关重要。
【问题讨论】:
php.net/manual/en/function.min.php 用preg_split
代替preg_replace
警告:min():当只给一个参数时,必须是数组
将error reporting 添加到文件顶部测试时在您打开PHP 标记之后,例如<?php error_reporting(E_ALL); ini_set('display_errors', 1);
以查看它是否产生任何结果。跨度>
你放弃了吗?
【参考方案1】:
来自min:
如果第一个也是唯一的参数是一个数组,则 min() 返回该数组中的最小值。如果提供了至少两个参数,则 min() 返回这些值中的最小值。
您正在传递一个参数,它是一个字符串。传递一个数组:
$resolutions = explode(',', $resolutions);
$resolution_min = min($resolutions);
【讨论】:
AbraCadaver 现在给我 0 ,但无论如何谢谢。我也做过这样的测试。我也试过 min(array($var))。我什至通过 print_r($arrayname) 确认了数组。显示的最小值和最大值均为“0”。 @TeknoGeekz 那么此时您的 $resolutions 可能不包含字符串形式的逗号分隔整数。您是否留下了用逗号替换空格的 preg_replace,或者...? 在strip_tags
之后和其他任何内容之前显示var_dump($resolutions);
。
我不知道你在 strip_tags 之后是什么意思,但我做了一个 var 转储到屏幕,然后查看源代码我看到了这个数组(4) [0]=> 字符串(3)“ 300" [1]=> 字符串(3) "300" [2]=> 字符串(3) "600" [3]=> 字符串(3) "600"
是的,逗号保留在原位。这也是与原始来源略有不同的来源。这个没有“75”值【参考方案2】:
AbraCadaver 的回答是正确的。
我已尝试改进您的代码。看看
<?php
// After Stripping tag
$resolutions = "75 75 300 300 600 600";
// No need to conver to Space to comma
$resolutionsArray = explode(" ", $resolutions);
$resolutionMin = min($resolutionsArray);
print($resolutionMin);
将“空白”转换为“逗号”没有任何好处。您可以通过将“空白”设置为分隔符来将字符串分解为数组。
希望对你有帮助。
【讨论】:
您好,欢迎加入 Stack Overflow。请准确描述您的代码是如何改进的;没有解释的代码块没有多大用处。 我得出的结论是,发生的事情比我理解的要多。也许远远超过我。我正在向 OP 添加一行代码,也许有人可以告诉我这些双引号? 那些双引号之间有空格作为分隔符。以上是关于如何从字符串变量中获取读取为整数的 CSV 整数的主要内容,如果未能解决你的问题,请参考以下文章