如何在PHP中防止数字的十八进制转换?

时间:2017-07-26 18:55:28

标签: php arrays

我有一个从另一个系统进来的数组,所以我不能简单地用值作为字符串加载数组。在数组中是全部为数字的ID。但是,某些ID具有前导零,并且前导零必须作为ID的一部分存在。 PHP正在将这些ID转换为十八进制。如何防止这种情况,以便我可以访问数组中的实际ID?

例如:

$ids=array(01234,1234);
$ids= array_map(function($var){ return (string) $var; }, $ids);
foreach ($ids as $id){
    echo $id;
    echo "<br />";
}

产地:
668个
1234

正如你所看到的那样,在尝试使用它之前,我已经尝试将数组中的每个元素转换为字符串,但它仍然以十八进制形式出现。

2 个答案:

答案 0 :(得分:0)

正如@IlyaBursov所说,你松开了第一行的0。您需要获取系统获取这些值的字符串版本。如果使用整数数据类型,则不能保持前导零。

将其作为字符串传递,它将保持领先0

以下是上述方法的功能示例Run it here

$ids=array('01234','1234');
$ids= array_map(function($var){ return (string) $var; }, $ids);
foreach ($ids as $id){
    echo $id;
    echo "<br />";
}

可生产,

01234<br />1234<br />

答案 1 :(得分:-1)

答案是在使用它之前修改字符串,在使用json_decode之前在字符串中的所有元素周围添加引号。

 $ids=str_replace(["[",",","]"],['["','","','"]'],$ids);