Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Substr不允许在表单上处理两位数代码_Php_Substr - Fatal编程技术网

Php Substr不允许在表单上处理两位数代码

Php Substr不允许在表单上处理两位数代码,php,substr,Php,Substr,我有一个数组,它在一个列表中使用两个代码,并将它们推送到下一页的表单中。目前我有: $code= array(); $code['c1'] = substr($part, 0, 1); $code['c2'] = substr($part, 2); 现在,如果我选择任何带有一位c1和一位或两位c2的内容,那么它会添加到表单中 示例: 1-9 1-15 9-12 9-9 但如果我尝试添加c1中有两位数的内容,它不会添加,比

我有一个数组,它在一个列表中使用两个代码,并将它们推送到下一页的表单中。目前我有:

            $code= array();
            $code['c1'] = substr($part, 0, 1);
            $code['c2'] = substr($part, 2);
现在,如果我选择任何带有一位
c1
和一位或两位
c2
的内容,那么它会添加到表单中

示例:

1-9
1-15
9-12
9-9
但如果我尝试添加c1中有两位数的内容,它不会添加,比如:

10-1
10-2
10-11
如果我尝试

$codes= array();
$codes['c1'] = substr($part, 0, 2);
$codes['c2'] = substr($part, 2);
然后没有代码显示

我如何解释两者

更新:

目前,如果我选择10-58,上面的代码将把c1转储为1,把c2转储为-5,您可以很容易地使用和拆分任何代码组合

$part = "1-15";
$codes = array();
list($codes['c1'], $codes['c2']) = explode("-", $part);
print_r($codes);

Array
(
    [c1] => 1
    [c2] => 15
)
为了

它给

Array
(
    [c1] => 10
    [c2] => 15
)
如果您不确定数据是否总是正确的,您可以在使用
explode()
后检查数据是否包含两个组件,然后仅对其进行转换,您还可以执行报告和错误或任何需要的操作

$split = explode("-", $part);
if ( count($split) == 2 ){
    $codes['c1'] = $split[0];
    $codes['c2'] = $split[1];
}
else    {
    // Not of correct format.
}

print_r($codes);

什么是
$part
,数组中的值如何在表单中使用?您所说的“无代码显示”到底是什么意思?使用“10-11”,结果在
c1
中为“10”,在
c2
中为“-11”?您希望输入的结果是什么?也许您只是想将
substr($part,2)
更改为
substr($part,3)
?@PatrickQ很抱歉造成混淆,但在上面的示例中,我希望表单以完全相同的方式反映10-1、10-2和10-11,但这是什么方式?您忽略了显示给定输入的期望输出。您应该使用2个字段,因为您有2个代码。但是,如果您想像现在这样组合它们,只需使用
explode()
。我知道您的答案中发生了什么,实际上我用更多的代码上下文更新了我的问题。有没有办法保持我上面的结构,但在“-”的两边仍然有一个或两个数字?你的意思是像我在
$part=“10-15”中包含的示例一样?是的,但是您上一个使用$split的示例是否会保持与我所拥有的类似的结构?它会产生与其他示例相同的结果,但只是增加了一点弹性,如果输入代码是wrong@TomN. 为什么这个答案不被接受?您不应该使用substr,应该使用explode。
$split = explode("-", $part);
if ( count($split) == 2 ){
    $codes['c1'] = $split[0];
    $codes['c2'] = $split[1];
}
else    {
    // Not of correct format.
}

print_r($codes);