我试图在Slim PHP:中实现这样的功能
第/p1/p2/p3/p4页
我希望如果我忽略了右边的params(显然),那么我想根据我收到的任何params来做我的事情。
$app->get('/page(/)(:p1/?)(:p2/?)(:p3/?)(:p4/?)',
function ($p1 = null, $p2 = null, $p3 = null, $p4 = null) {
print empty($p1)? : '' . "p1: $p1/<br/>";
print empty($p2)? : '' . "p2: $p2/<br/>";
print empty($p3)? : '' . "p3: $p3/<br/>";
print empty($p4)? : '' . "id: $p4<br/>";
});
一切都按预期进行,但问题是每当我从末尾删除一个参数时,它都会为我删除的每个参数打印1
。它为什么这么做?我在这里做错了什么?
由于省略了三进制的第二部分(如果测试语句返回true
,则应打印内容),因此三进制语句返回测试表达式的计算结果。然后打印出该结果。
当您省略路由中的最后一个参数时,测试表达式将结果为true
,但由于您没有定义在这种情况下要做什么,因此会返回true
并打印出1
。
试试这个:
$app->get('/page(/)(:p1/?)(:p2/?)(:p3/?)(:p4/?)',
function ($p1 = null, $p2 = null, $p3 = null, $p4 = null) {
print empty($p1)? "" : '' . "p1: $p1/<br/>";
print empty($p2)? "" : '' . "p2: $p2/<br/>";
print empty($p3)? "" : '' . "p3: $p3/<br/>";
print empty($p4)? "" : '' . "id: $p4<br/>";
});
现在,脚本知道如果其中一个empty()
表达式返回true该怎么办——打印一个空字符串。