array_shift和explode有效吗?

时间:2011-12-28 22:29:04

标签: php

我想知道他们是否在>中停用了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的情况下做同样的事情?

2 个答案:

答案 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它的函数引用需要一个变量:


enter image description here


(另见: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