我想知道他们是否在>中停用了array_shift
PHP 5.2.6
$realid = array_shift(explode("-", $id));
因为此代码在我的服务器PHP版本5.2.6上运行正常,而在另一台具有更高PHP版本的服务器中无效。
如果是这样,无论如何我可以做到以下几点:
对于这样的网址87262-any-thing-here.html
,如何才能获得数字87262
,以便我用它来调用数据库中的任何条目:
$qryrec="select * from mytable where id='$realid'";
$resultrec=mysql_query($qryrec) or die($qryrec);
$linerec=mysql_fetch_array($resultrec);
有没有办法在没有array_shift
的情况下做同样的事情?
答案 0 :(得分:3)
使用
$realid = explode("-", $id);
$realid = $realid[0];
答案 1 :(得分:2)
编辑:要获取字符串开头的小数值,可以使用sscanf
:
$url = '87262-any-thing-here.html';
list($realid) = sscanf($url, '%d');
如果网址开头没有小数,$realid
将是NULL
。使用explode
,您将获得取决于网址的未定义结果。
array_shift
Docs它的函数引用需要一个变量:
(另见:Passing by Reference)
但你给它一个功能:
$realid = array_shift(explode("-", $id));
我不希望它因此而总是正常工作。此外,这可能会在某些安装中触发警告和错误。
而是使用变量:
$ids = explode("-", $id);
$realid = array_shift($ids);
unset($ids);
或者在你的情况下:
list($realid) = explode("-", $id);
将确定explode
返回到$realid
的数组的第一个元素。请参阅list
Docs。