【发布时间】:2021-07-14 04:12:15
【问题描述】:
我有一个大概 10 年前编写的 PHP 脚本。我不记得当时 PHP 的版本是什么,但我的脚本运行良好,没有解释器的抱怨。现在,我不得不将我的脚本移动到一个新的网络主机上,并且在 PHP 7.x 下,解释器大声抱怨这个脚本的某一行,我正在寻找一种优雅的方法让它闭嘴。
违规行是:-
list($degrees, $minutes, $seconds) = preg_split("/ /", $coord);
$coord 变量包含以下三种形式之一的 GPS 坐标:“度分秒”、“度十进制度”或“十进制度”。因此,preg_split() 可能返回 1、2 或 3 个元素。如果它只返回 1 或 2 个元素,解释器会大声抱怨对 $seconds 和/或 $minutes 的未定义引用。我看到我可以为preg_split() 指定一个 LIMIT 参数,它可以为其返回最大数量的元素,但似乎没有一个免费参数来告诉它要返回的最小元素数量。欢迎提出任何建议。
示例坐标:“-97.74019”或“-97 44.411”或“-97 44 24.7”
【问题讨论】:
-
为什么不使用
array? -
$d_m_s_array = preg_split("/ /", $coord); $degrees = 0; $minutes=0; $seconds=0; if (!empty($d_m_s[0])){$degrees = $d_m_s[0];} ... same for minute and second -
你能告诉我们
$coord的样本值吗? -
使用这个:
@list($degrees, $minutes, $seconds) = preg_split("/ /", $coord);详情见我的回答。 -
unclerojelio 您在下面有答案,检查它们并将其中一个答案标记为已接受。如果其他答案也有用,您也可以对其进行投票。谢谢
标签: php preg-split